Составители:
/ ∗ создание новых потоков ∗ /
20) pthread_create(&cid, &attr, Consumer, NULL);
21) pthread_join(pid, NULL);
22) pthread_join(cid, NULL);
/ ∗ родительские процессы ожидают завершения ∗ /
/ ∗ сыновних процессов ∗ /
23) }
1
24) / ∗ пом ести ть в буфер данных числа 1, . . . , numIter ∗ /
25) void ∗ Producer(void ∗ arg); {
1
26) int produced;
27) for (produces = 1; produced <= numIters; produced
++
) {
2
28) sem_wait(&empty);
29) data = prodused;
30) sem_post(&full);
31) }
2
32) }
1
33) / ∗ из влеч ь numIters элементов из буфера и сложить ∗ /
34) void ∗ Consumer(void ∗ arg) {
1
35) int total = 0, consumed;
36) for (consumed = 1; consumed <= numIters; cunsumed
++
) {
2
37) sem_wait(&full); # P(full)
38) total = total + data;
39) sem_post(&empty); # V(empty)
40) }
2
41) printf(“Сумма равна” , total);
42) }
1
107
Страницы
- « первая
- ‹ предыдущая
- …
- 104
- 105
- 106
- 107
- 108
- …
- следующая ›
- последняя »