linux多執行緒控制

2021-06-25 21:13:54 字數 1007 閱讀 2899

#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 設定執行緒的屬性,...