Linux線程同步之信號C語言實例
更新時間:2015年04月27日 10:40:18 投稿:junjie
這篇文章主要介紹了Linux線程同步之信號C語言實例,本文直接給出代碼實例,需要的朋友可以參考下
linux中向某個線程發(fā)送信號,若沒有對該信號的處理函數(shù),則會導致程序結束。
如下面的程序,創(chuàng)建一個線程,主線程向其發(fā)送一個信號,會導致程序立即結束
#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);
}
這就要求利用pthread_kill 與 sigwait 通過等待信號來控制線程時應添加一個信號處理函數(shù)來實現(xiàn)對線程的控制
改進后的控制線程程序
#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);
}
部分效果
![]()
相關文章
Qt使用windeployqt工具實現(xiàn)程序打包發(fā)布方法
本文主要介紹了Qt使用windeployqt工具實現(xiàn)程序打包發(fā)布方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
Windows10配置VSCode C++環(huán)境(超詳細,面向小白以及大佬們)
這篇文章主要介紹了Windows10配置VSCode C++環(huán)境(超詳細,面向小白以及大佬們),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12

