通过本文主要向大家介绍了linux c语言 多线程,linux c语言线程,linux c语言 实现线程,linux下c语言编程,linux c语言等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
linux中向某个线程发送信号,若没有对该信号的处理函数,则会导致程序结束。
如下面的程序,创建一个线程,主线程向其发送一个信号,会导致程序立即结束
#include <stdio.h>
#include <pthread.h>
pthread_t t;
void* run(void* arg)
{
while(1)
{
printf("Hello\n");
}
}
main()
{
pthread_create(&t, 0, run, 0);
pthread_kill(t,34);
while(1);
}
</div>
这就要求利用pthread_kill 与 sigwait 通过等待信号来控制线程时应添加一个信号处理函数来实现对线程的控制
改进后的控制线程程序
#include <stdio.h>
#include <pthread.h>
#include <signal.h>
pthread_t t1, t2;
sigset_t sigs;
void handle(int s)
{
}
void* r1(void* arg)
{
int s;
while(1)
{
printf("1\n");
sigwait(&sigs, &s);
}
}
void* r2(void* arg)
{
while(1)
{
sleep(1);
printf("2\n");
pthread_kill(t1, 34);
}
}
main()
{
signal(34, handle);
sigemptyset(&sigs);
sigaddset(&sigs, 34);
pthread_create(&t1, 0, r1, 0);
pthread_create(&t2, 0, r2, 0);
while(1);
}
</div>
部分效果
![]()

