Теория распараллеливания и синхронизация. Демьянович Ю.К - 106 стр.

UptoLike

/ создание новых потоков /
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