1. 訊號量
kill -l
13號訊號量 (pipe 沒有讀了,還去寫,缺省會退出)
17號訊號量 (child 退出時傳送 17 號訊號量 )
程序接收到訊號以後,可以有如下3
種選擇進行處理:
1. 預設處理 signal(sigint,sig_d
fl);2.忽略訊號 signal(sigint,sig_ign);
3.呼叫函式 signal(sigint,fun )
sigint 是2號函式 ,這裡signal 可以換別的訊號,自己填'
sigkill sigstop 這2個訊號是 不能被忽略的
2. 多執行緒
pthread_create()
建立執行緒
pthread_join()
**對應的執行緒,放main裡,在子執行緒退出後,**子執行緒資源
pthread_exit()
子執行緒退出,用 exit()的話會程序退出
pthread_mutex_init
初始化鎖
pthread_mutex_lock
關鎖 pthread_mutex_unlock()
解鎖 pthread_mutex_destory
銷毀鎖,放main()中,程序結束時不需要鎖後,進行銷毀
pthread_self( )
讀執行緒id
pthread_detach( )
**資源(系統**) ,放自己執行緒裡
條件變數:
pthread_cond_wait()
放入阻塞佇列,等待被叫醒
pthread_cond_signal()
阻塞佇列有人,則叫醒第乙個
pthread_cond_broadcast()
叫醒阻塞佇列裡的所有人
pthread_cond_init()
條件變數初始化,一般在main()中初始
pthread_cond_destory()
銷毀條件變數,一般在main()中銷毀
任務1: 建立執行緒,實現多視窗賣票;
任務2: 客戶端,伺服器, 客戶端放送資訊給伺服器,客戶端的資訊由 伺服器中的執行緒進行處理,處理完後返回給客戶端;
伺服器一條總管道,這條管道只接收客戶端的上線資訊;
客戶端的傳送資訊,接收資訊管道均由客戶端建立,注意建立管道要放前面。(當在管道建立之前去開啟管道的話open()函式會返回-1 )
伺服器運用select()函式輪詢 訊號,與伺服器建立聯絡的客戶端連線成乙個鍊錶,並將客戶端相應的描述符加入select 中,當客戶端退出時刪除鍊錶中的結點,並且將select中的描述符刪除;
伺服器接收到的資訊任務放在乙個訊息佇列中,子執行緒互斥的從佇列中取任務處理,返回給客戶端。
任務2詳情見 0826**;
多執行緒 訊號量
訊號量 semaphore類 建立帶指定許可數的訊號量 semaphore semaphore new semaphore 1 建立乙個許可的訊號量 訊號量用來限制訪問共享數資源的執行緒數。在訪問資源之前,執行緒必須從訊號量獲取許可,在訪問完資源後釋放訊號量。任務通過呼叫訊號量的acquire 方法...
多執行緒通訊 訊號量
當當前資源的數量大於0的時候,等待訊號量的執行緒可以獲得乙個資源並繼續執行,訊號量的當前資源數量將減1,如果當前資源的數量為0,則等待訊號量的執行緒將處於等待狀態,直到有執行緒釋放訊號量,使訊號量標識的資源數量大於0 handle createsemaphore lpsecurity attribu...
多執行緒之訊號量
本文的訊號量型別為posix無名訊號量 1 訊號量基礎知識 2 訊號量的主要用到的函式 int sem init sem t sem,int pshared,unsigned int value int sem destroy sem t sem int sem wait sem t sem int...