訊號量控制併發數

2022-06-14 15:39:11 字數 3145 閱讀 3944

建立乙個訊號量,設定最大併發數為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 ...