with語句在多執行緒程式設計中遇到的問題

2022-09-20 08:30:13 字數 1996 閱讀 9023

**段1:

1

#-*-coding:utf-8 -*-

2from threading import

thread, boundedsemaphore

3from datetime import

datetime

4import

time56

#定義乙個函式

7def

showtime(signal):

8print

(datetime.now())

9 time.sleep(2)

10signal.release()

1112

#建立乙個有界訊號量物件,內部計數器的初始值為3

13 bsema = boundedsemaphore(3)14#

建立並啟動10個執行緒

15with bsema:

16for n in range(10):

17bsema.acquire()

18 t = thread(target=showtime,args=(bsema,))

19 t.start()

**段2:

1

#-*-coding:utf-8 -*-

2from threading import

thread, boundedsemaphore

3from datetime import

datetime

4import

time56

#定義乙個函式

7def

showtime(signal):

8print

(datetime.now())

9 time.sleep(2)

10signal.release()

1112

#建立乙個有界訊號量物件,內部計數器的初始值為3

13 bsema = boundedsemaphore(3)14#

建立並啟動10個執行緒由於訊號量初始值為3,所以每次只有3個執行緒併發執行

15for n in range(10):

16bsema.acquire()

17 t = thread(target=showtime,args=(bsema,))

18 t.start()

**段1的結果是每次只有2個執行緒在執行函式showtime,但是**段2的結果是每次有3個執行緒在執行showtime函式,原因是什麼?

**段1執行結果:

2022-02-06 00:35:46.583684

2022-02-06 00:35:46.583684

2022-02-06 00:35:48.598238

2022-02-06 00:35:48.599237

2022-02-06 00:35:50.607590

2022-02-06 00:35:50.608596

2022-02-06 00:35:52.622436

2022-02-06 00:35:52.623437

2022-02-06 00:35:54.630541

2022-02-06 00:35:54.631551

**段2執行結果:

2022-02-06 00:32:59.856888

2022-02-06 00:32:59.857888

2022-02-06 00:32:59.857888

2022-02-06 00:33:01.862122

2022-02-06 00:33:01.863158

2022-02-06 00:33:01.864120

2022-02-06 00:33:03.865883

2022-02-06 00:33:03.866844

2022-02-06 00:33:03.867841

2022-02-06 00:33:05.878067

事件在多執行緒程式設計中的應用

在多執行緒程式設計時,常常需要在幾個執行緒之間進行切換,在切換的同時需要同步訪問共享變數,而事件就是同步的其中一種方式 createevent可以有兩種方式來建立事件,一種是以人工重置的方式,另一種是以自動重置的方式,在使用自動重置的事件時,當該事件有訊號之後就會重置該訊號,意思就是說使該訊號變為無...

C 中多執行緒程式設計

2 threadpool 執行緒池 threadpool 是一種相對較簡單的方法,它適應於一些需要多個執行緒而又較短任務 如一些常處於阻塞狀態的執行緒 它的缺點是對建立的執行緒不能加以控制,也不能設定其優先順序。由於每個程序只有乙個執行緒池,當然每個應用程式域也只有乙個執行緒池 對線 所以你將發現t...

多執行緒開發中遇到的問題

1.開發專案 大體框架如下 1.主線程接收命令,放進佇列 1 中.命令分 2 種 本地執行命令 網路傳輸命令 2.處理執行緒 從佇列 1 中取出依次取出命令進行處理 分兩種情況 1.取到本地命令,直接執行,並立即將結果放入佇列 2 中,使用訊號量 通知主線程 接收處理結果 2.網路傳輸命令,本地立即...