Блокирование семафора и увеличение счетчика
20-26 Параметр командной строки позволяет указать количество увеличений счетчика. Каждый раз мы выводим предыдущее значение счетчика вместе с идентификатором процесса, поскольку одновременно работают несколько экземпляров программы.
Запустим сначала сервер, а затем три экземпляра программы-клиента в фоновом режиме.
solaris % server shm1 sem1
solaris % client1 shm1 sem110000 &client1 shm1 sem110000 &client1 shm1 sem1 10000&
[2] 17976 интерпретатор выводит идентификаторы процессов
[3] 17977
[4] 17978
pid 17977: 0 и этот процесс запускается первым
pid 17977: 1
. . . процесс 17977 продолжает работу
pid 17977: 32
pid 17976: 33 ядро переключается междупроцессами
. . . процесс 17976 продолжает работу
pid 17976: 707
pid 17978: 708 ядро переключается между процессами
. . . процесс 17978 продолжает работу
pid 17978: 852
pid 17977: 853 ядро переключается между процессами
. . . и т.д.
pid 17977: 29997
pid 17977: 29999 последнее выводимое значение. Оно оказывается правильным.