C 多執行緒小試 賣個票

2021-08-15 18:16:33 字數 879 閱讀 3203

#include #include #include int ticks = 10;

static pthread_mutex_t mlock = pthread_mutex_initializer;

void* selltick(void* seller){

while(ticks>0){

pthread_mutex_lock(&mlock);

ticks--;

std::cout<<"seller["<(seller)<<"].sell a tick, the rest ticks:"<>c;

std::cout《三個賣票執行緒,分別對全域性變數ticks做減法,執行緒內注意用互斥鎖保護程序對ticks訪問的原子操作。

pthread_detach(),使執行緒脫離主線程,主線程return之後,detach的執行緒同樣會退出;主線程pthread_exit,detach的執行緒不會退出。

pthread_join()即是子執行緒合入主執行緒,主線程阻塞等待子執行緒結束,然後**子執行緒資源。

***

簡單來說: pthread_detach()即主線程與子執行緒分離,子執行緒結束後,資源自動**。pthread_join()即是子執行緒合入主執行緒,主線程阻塞等待子執行緒結束,然後**子執行緒資源。

在任何乙個時間點上,執行緒是可結合的(joinable)或者是分離的(detached)。乙個可結合的執行緒能夠被其他執行緒收回其資源和殺死。在被其他執行緒**之前,它的儲存器資源(例如棧)是不釋放的。相反,乙個分離的執行緒是不能被其他執行緒**或殺死的,它的儲存器資源在它終止時由系統自動釋放。

預設情況下,執行緒被建立成可結合的。為了避免儲存器洩漏,每個可結合執行緒都應該要麼被顯示地**,即呼叫pthread_join;要麼通過呼叫pthread_detach函式被分離。 轉】

多執行緒 03 搶票

學過建立執行緒的二種方法,一是繼承thread類,重寫run方法,第二種是實現runnble介面,推薦使用第二種,這樣能夠避免單繼承的侷限性。接下來用第二種實現runnble介面寫下案例,模擬搶票 package com.cb.thread 共享資源,併發 執行緒安全 public class we...

多執行緒小試牛刀

匯入多執行緒模組 import threading 例項化乙個rlock物件mlock mlock threading.rlock 將0賦值給num變數 num 0 定義test函式 deftest global num 將num變數轉換成全域性變數 mlock.acquire 加鎖 please ...

多執行緒程式設計 牛刀小試

public class ticketthread implements runnable override public void run else 1.寫乙個類實現runnable介面,重寫run方法,run裡面寫業務邏輯。public class tickettset 2.寫乙個類呼叫。開始r...