[問題] dispatch semaphore
1 __block dispatch_semaphore_t sem = dispatch_semaphore_create ( 0 ) ;
2
3 dispatch_queue_t queue = dispatch_queue_create ( "firstQueue" , nil ) ;
4 dispatch_async ( queue, ^ ( void ) {
5 sleep ( 2 - i / 50 ) ;
6 NSLog ( @ "The sum is: %d" , i ) ;
7
8 // signal the semaphore
9 dispatch_semaphore_signal ( sem ) ;
10 } ) ;
11
12 // wait for the semaphore
13 dispatch_semaphore_wait ( sem, DISPATCH_TIME_FOREVER ) ;
14
15 dispatch_release ( queue ) ;
看完apple的文件
只大概了解semaphore是一個lock的機制
dispatch_semaphore_wait會將semaphore 減 1
如果semaphore的值為小於0時
則其它process就暫時不能access該resource
dispatch_semaphore_signal則會將semaphore 加 1
想問說這個概念套用到上面的程式碼的邏輯是什麼?
semaphore針對的resource是程式碼的哪個區塊?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.131.203
→
08/28 13:03, , 1F
08/28 13:03, 1F
→
08/28 14:25, , 2F
08/28 14:25, 2F
※ 編輯: whitefur 來自: 114.36.63.187 (08/28 14:26)
※ 編輯: whitefur 來自: 114.36.63.187 (08/28 14:27)
→
08/28 15:23, , 3F
08/28 15:23, 3F
→
08/28 17:06, , 4F
08/28 17:06, 4F
→
08/28 17:07, , 5F
08/28 17:07, 5F
→
08/28 17:08, , 6F
08/28 17:08, 6F
→
08/28 22:14, , 7F
08/28 22:14, 7F
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章