建立乙個訊號量,設定最大併發數為5,5個執行緒,非同步執行
dispatch_semaphore_tsema = dispatch_semaphore_create(5);
dispatch_semaphore_wait(sema, dispatch_time_forever);
dispatch_async(dispatch_get_global_queue(dispatch_queue_priority_default, 0), ^{
dispatch_semaphore_signal(sema);
備註:dispatch_semaphore_create(5) 好比5個停車位
dispatch_semaphore_wait 好比來了一輛車,停車位-1
dispatch_semaphore_signal 好比走了一輛車,停車位+1
列印結果為:(可發現每5個一組,順序不定)
0
1
2
3
4
6
5
7
8
9
11
10
13
12
14
15
16
17
18
19
20
22
23
21
24
25
29
27
28
26
30
32
31
33
34
35
36
38
37
39
41
42
43
40
44
45
46
47
48
49
50
51
52
53
54
55
57
56
58
59
60
62
61
63
64
65
67
66
68
69
70
74
72
71
73
75
77
76
78
79
80
81
83
82
84
85
87
86
88
89
91
90
92
94
93
95
97
96
98
99
Linux系統訊號量控制
include include include include include include using namespace std const int times 5 const int delay 5 union semaphore static int semaphoreid 0 stati...
0716Semaphore 訊號量控制程序同步
from multiprocessing import process current process semaphore def funca args args 引數是例項化的semaphoer 開啟乙個檔案,寫入內容,在本函式執行的時候其他程序不能執行 semaphoer例項的acquire 方...
C 使用Semaphore(訊號量)控制多執行緒
在c net中,當需要動態控制線程的數量時,我們可以使用semaphore來控制最大執行緒數。class program thread sleep 1000 console writeline main方法結束 授予5個請求 semaphore release 5 console readline ...