解析C/C++中如何终止线程的运行
在C/C++中实现终止线程的运行涉及到线程的控制、同步及中断等方面。以下是终止线程的运行的完整攻略:
- 用共享变量来控制线程的运行
在线程运行期间,可以设置共享变量,利用共享变量来控制线程的运行。例如,将共享变量设置成一个flag,当flag=0时,线程继续运行;当flag=1时,线程退出。
示例1:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int flag = 0;
void *thread_function(void *arg)
{
while(!flag)
{
printf("Thread is running!\n");
sleep(1);
}
printf("Thread is going to exit!\n");
pthread_exit(NULL);
}
int main(void)
{
pthread_t tid;
if(pthread_create(&tid, NULL, thread_function, NULL) != 0)
{
printf("Create thread failed!\n");
return -1;
}
sleep(5);
flag = 1;
if(pthread_join(tid, NULL) != 0)
{
printf("Could not join thread\n");
return -2;
}
printf("Thread exited!\n");
return 0;
}
- 使用互斥量及条件变量来同步线程
使用互斥量及条件变量能够更好地同步线程,实现线程的中断。
示例2:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
int flag = 0;
void *thread_function(void *arg)
{
pthread_mutex_lock(&mutex);
while(!flag)
{
pthread_cond_wait(&cond, &mutex);
}
printf("Thread is going to exit!\n");
pthread_mutex_unlock(&mutex);
pthread_exit(NULL);
}
int main(void)
{
pthread_t tid;
if(pthread_create(&tid, NULL, thread_function, NULL) != 0)
{
printf("Create thread failed!\n");
return -1;
}
sleep(5);
flag = 1;
pthread_cond_signal(&cond);
if(pthread_join(tid, NULL) != 0)
{
printf("Could not join thread\n");
return -2;
}
printf("Thread exited!\n");
return 0;
}
以上示例均可以实现线程的终止,具体使用哪种方法取决于实际需求。需要注意的是,在终止线程时应该做好资源清理工作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解析C/C++中如何终止线程的运行 - Python技术站