国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

Linux線程同步之信號C語言實例

2020-01-26 15:07:03
字體:
供稿:網(wǎng)友

linux中向某個線程發(fā)送信號,若沒有對該信號的處理函數(shù),則會導(dǎo)致程序結(jié)束。
如下面的程序,創(chuàng)建一個線程,主線程向其發(fā)送一個信號,會導(dǎo)致程序立即結(jié)束

#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 通過等待信號來控制線程時應(yīng)添加一個信號處理函數(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); } 

部分效果

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 福泉市| 同德县| 苗栗市| 时尚| 安阳县| 清流县| 张北县| 普兰店市| 区。| 平邑县| 汕尾市| 竹北市| 定兴县| 清新县| 牡丹江市| 台安县| 玉山县| 克东县| 谷城县| 长乐市| 五寨县| 红安县| 凌源市| 始兴县| 巴林右旗| 东光县| 松阳县| 泸西县| 瑞昌市| 江北区| 乌拉特前旗| 华安县| 平潭县| 滨海县| 吴旗县| 绥德县| 综艺| 抚州市| 潜江市| 许昌县| 开远市|