在c++中主线程如何干掉另一个线程

在c++中主线程如何干掉另一个线程,第1张

执行完成后隐式退出

线程本身显示调用pthread_exit 函数退出;pthread_exit (void * retval)

被其他线程用pthread_cance函数终止:pthread_cance (pthread_t thread)

解决办法:

// 创建线程前设置 PTHREAD_CREATE_DETACHED 属性

pthread_attr_t attr

pthread_t thread

pthread_attr_init (&attr)

pthread_attr_setdetachstat(&attr, PTHREAD_CREATE_DETACHED)

pthread_create (&thread, &attr, &thread_function, NULL)

pthread_attr_destroy (&attr)

当线程为joinable时,使用pthread_join来获取线程返回值,并释放资源。

当线程为joinable时,也可在线程中调用 pthread_detach(pthread_self())

调用ExitThread函数。该函数将终止线程的运行,并导致 *** 作系统清除该线程使用的所有 *** 作系统资源。但是,C++资源(如C++类对象)将不被撤消。(3)调用TerminateThread函数。TerminateThread 能撤消任何线程。线程的内核对象的使用计数也被递减。TerminateThread函数是异步运行的函数。如果要确切地知道该线程已经终止运行,必须调用WaitForSingleObject或者类似的函数。当使用返回或调用ExitThread的方法撤消线程时,该线程的内存堆栈也被撤消。但是,如果使用TerminateThread,那么在拥有线程的进程终止运行之前,系统不撤消该线程的堆栈。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/8914877.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-22
下一篇2023-04-22

发表评论

登录后才能评论

评论列表(0条)

    保存