Tutaj pojawia się pierwszy problem jak zrobić, żeby te zmienne były dzielone przez wszystkie procesy czyli żeby każdy z podprocesów mógł je czytać i modyfikować?
Można się posłużyć pamięcią współdzieloną, ale przypuszczam, że nie o to chodzi. Ogólnie, procesy mają swoją własną przestrzeń adresową. Jeżeli jest to przeszkodą, możesz użyć wątków, które działają w jednej przestrzeni adresowej i mogą wzajemnie nadpisywać sobie zmienne;)
Zmienne mutex i pis mają być liczbami całkowitymi czy mają być semaforami.
Do synchronizacji procesów i wątków wykorzystuje się semafory. Linux dostarcza implementacji semaforów. Podręcznik systemowy dosyć obszernie opisuje to zagadnienie:
może być konieczne zainstalowanie pakietu
manpages-dev
PS:
To jest dosyć powszechny błąd w programowaniu współbieżnym, tzw.
spin-lock, czy też
aktywne czekanie. Niby jest to poprawne, program czeka aż wartość zmiennej osiągnie zero, lecz przez ten cały czas pętla się "kręci", mocno obciążając procesor. Lepiej użyć obiektów dostarczanych przez system operacyjny, które powodują "uśpienie" procesu tak, że inne procesy mogą wykorzystać czas procesora.