程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Linux線程同步之旌旗燈號C說話實例

Linux線程同步之旌旗燈號C說話實例

編輯:關於C++

Linux線程同步之旌旗燈號C說話實例。本站提示廣大學習愛好者:(Linux線程同步之旌旗燈號C說話實例)文章只能為提供參考,不一定能成為您想要的結果。以下是Linux線程同步之旌旗燈號C說話實例正文


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); 
} 


這就請求應用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); 
} 

部門後果

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved