【问题标题】:How to stop a specific thread in C process.h?如何停止 C process.h 中的特定线程?
【发布时间】:2012-03-19 18:14:17
【问题描述】:

我刚刚学习了在 C 编程中使用 process.h 在程序中创建线程的基本原理。而现在,我的问题是如何停止特定线程。

这是我的代码:

#include <stdio.h>
#include <windows.h>
#include <process.h>    

void  mimicCounter( void * );   

int main()
{
    int i;


    printf( "Now in the main() function.\n" );

    _beginthread( mimicCounter, 0, (void*)12 );

    for(i = 2; i <= 10; i++){
          Sleep(500);
          printf("%d\n",i);
    }

    system("PAUSE");
    printf("\n");
}

void  mimicCounter( void *arg )
{
    int i;
    printf( "The mimicCounter() function was passed %d\n", (INT_PTR)arg ) ;
    for(i = 1; i <= 10; i++){
          Sleep(500);
          printf("%d\n",i);
    }
}

我只想在我创建的线程(mimicCounter 函数)达到 i = 5 时停止它(是的,我知道我将它设置为 10,但这是为了结束线程演示)。

非常感谢:)

【问题讨论】:

  • 什么是silly?请贴出真实代码。
  • 刚刚编辑...抱歉我忘了更改函数的名称...当我在这里发布时...
  • 10 更改为可以从其他线程修改的同步变量。
  • 你想杀死线程还是暂停它?

标签: c windows multithreading


【解决方案1】:

_endthread 和 _endthreadex 函数分别终止由 _beginthread 或 _beginthreadex 创建的线程。您可以显式调用 _endthread 或 _endthreadex 来终止线程;但是,当线程从作为参数传递给 _beginthread 或 _beginthreadex 的例程返回时,会自动调用 _endthread 或 _endthreadex。通过调用 endthread 或 _endthreadex 来终止线程有助于确保正确恢复为线程分配的资源。

来自http://msdn.microsoft.com/en-us/library/aa246804(v=vs.60).aspx

【讨论】:

    猜你喜欢
    • 2020-08-28
    • 2011-12-08
    • 1970-01-01
    • 2010-12-27
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多