fork a pthread_create - jakie są różnice?

0

Czy ktoś mógłby w kilku zdaniach wyjaśnić różnice? Rozumiem , że pthread tworzy watki, a fork ??

0

fork - dzieli włos na czworo, to znaczy bieżący wątek na dwa niezależne wątki (uwaga nie jest standardem w c/c++)

4

Wątki są dużo "lżejsze" od procesów bo współdzielą kod i niektore sekcje danych. No i komunikacja pomiędzy wątkami jest bardzo prosta bo są częścią tego samego procesu.
Procesy są cięższe, ale są niezależne -> wysypanie sie jednego procesu nie wpływa w żaden sposób na inne procesy. Wysypanie sie wątku może.

2

fork tworzy nowy proces duplikując ten, z którego został wywołany. Taki proces ma inny PID i osobną pamięć. Wątki to takie "mniejsze procesy" działające w ramach procesu, który je stworzył: pamięć jest wspólna.

Całkiem ciekawy artykuł, mówiący znacznie więcej niż trzy zdania powyżej: http://www.geekride.com/fork-forking-vs-threading-thread-linux-kernel/

0

A tak w sporym skrócie to mechanizmy jakie są stosowane w sekcjach krytycznych są takie same przy synchronizacji procesów i watkow ? Czym rózni sie mutex od semafora?

0

Nie, czytam, czytam i czytam, ale ludzie mylą i wprowadząją w błąd, piszą np. że fork tworzy procesy z niezależną pamięcią względem rodzica, ale nie mówią co się dzieje gdy pracują na tej samej zmiennej. Ponadto używają zamienne mutexów i semaforów, a wiem, że są ważne różnice

0

@matmaiop jedyna sytuacja kiedy mogą pracować na "tej samej zmiennej" to jeśli masz tu shared memory.
Mutex to jest taki binarny semafor. Semafor może puszczać pewną liczbę jednostek dalej, a mutex tylko jedną.
Mechanizmy synchronizacji wątków i procesów zasadniczo są takie same.

1 użytkowników online, w tym zalogowanych: 0, gości: 1