#include#include#include#include#include#define size 1024
//函式作用:使用訊號量控制,讀取輸入,獲得長度
void* thread_function(void* argv);
char buf[size];
sem_t sem;
int main()
res=pthread_create(&pthread,null,thread_function,null);
if(res!=0)
//開始盡心迴圈輸入
while(scanf("%s",buf))
}printf("input end,waitting for thread finish\n");
res=pthread_join(&pthread,null);
if(res==0)
sem_destroy(&sem);
exit(0);
}void* thread_function(void* argv)
pthread_exit(null);
}
sem_init是初始化訊號量的操作
sem_post是乙個原子操作。對乙個訊號量加1操作
sem_wait也是乙個原子操作,訊號量大於0則減一,立即返回,如果小於零則阻塞,如果等於零也是阻塞
如果訊號量之前是2的話,sem_wait操作之後是1,同時不會等待,如果訊號量是1的話,則sem_wait訊號量變成了0,則會阻塞,不再繼續執行,直到變成了非0值
pthread_join則是等待某個執行緒執行完成之後,繼續向下執行,否則阻塞
,該函式主要是執行緒
1.開始sem是0,阻塞在sem_wait,然後,
2.使用者輸入,sem_post使得sem加一,sem_wait可以返回了
3.但是同時sem的值又變成了0,使用者輸入sem_post加一
4.sem_wait可以返回,進而輸出輸入字串長度!
python多執行緒控制
利用wait的阻塞機制,就能夠實現暫停和恢復了,再配合迴圈判斷標識位,就能實現退出了 usr bin env python coding utf 8 import threading import time class job threading.thread def init self,args,...
linux執行緒控制
1.執行緒屬性 a 分離狀態 不需要了解執行緒返回終止狀態時設定 b 棧末尾警戒緩衝區 避免棧溢位的擴充套件記憶體大小,一般系統設定為頁的整數倍 c 棧的最小位址 i.當有許多執行緒時,減少棧大小 ii.當執行緒中有許多自動變數時,則增大棧大小 d 棧的最小長度 2.互斥量屬性 a 程序共享屬性 i...
Linux 執行緒控制
話不多說,直接進入正題!1.什麼是執行緒?2.執行緒控制 2.1 執行緒建立int pthread create pthread t tid,pthread attr t attr,void start routine void void arg tid 返回執行緒id attr 設定執行緒的屬性,...