Multiprocesing

1

Witam,

Nie wiem czy pytanie umieszczam w dobrym dziale, proszę o przeniesienie w razie potrzeby. Interesuje się wielowątkowością i wieloprocesowością. Usłyszałem ze Windows jako taki nie wspiera wieloprocesowości w przeciwieństwie do linuxa, mało jest informacji na temat tego z strony microsoft. Większość głównie na temat wątków. Jeśli ktoś zna artykuły na ten temat to proszę o linki.

Pzdr.

1

Usłyszałem ze Windows jako taki nie wspiera wieloprocesowości w przeciwieństwie do linuxa,
Bzdura. Kto ci tak nagadał? Linuksowiec pewnie jakiś… ;-)

Większość głównie na temat wątków.
Bo na tym to się opiera: na komputerze wieloprocesorowym (lub wielordzeniowym) poszczególne wątki są rozkładane na procesory.
Jak utworzysz cztery wątki na Quadzie, to każdy może, nie musi, działać na osobnym rdzeniu. Można tym sterować, ale lepiej nie i zostawić to jądru systemu, a operować tylko ilością tworzonych wątków.

0

Bzdura. Kto ci tak nagadał? Linuksowiec pewnie jakiś… ;-)

Nie trudno się domyśleć, prawda :-) ?

W linuxie możemy używając funkcji

int fork();

i

int pthread_create(pthread_t  * thread,  pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);

tworzyć procesy i wątki w procesach. I łatwo się przemieszczać między nimi. Czy w windowsie jest podobna możliwość ? Jeśli chodzi o procesy...

0

Z tego co mi wiadomo, nie ma forka (ale szczerze to jestem o krok od stwierdzenia że jest evil). Biblioteka pthread jest dostępna w pakiecie MinGW (jest to port linuksowego kompilatora GCC pod Windows) ale IMHO jest to drętwa biblioteka. Wbudowane w system funkcje WinAPI, od CreateThread() zaczynając, są wygodniejsze.

0

Fork? Jakoś nie widzę zastosowania, stwarza trochę problemów a i specjalnie lekki nie jest. Windows ma thready, fibery, completion porty jako mechanizm przetwarzania równoległego, zamiast ręcznego zarządzania pulą wątków. Problem w tym, że dobrze użyte wątki na Windows spięte z completion portami przebijają wydajnością wszystko, co można na Linuksie stworzyć. Od dawna pojawiają się głosy żeby podobne mechanizmy w Linuksie dodać, w końcu mamy XXI w. a nie średniowiecze, ale taki zawodnik zostaje zakrzyczany...

Co do tego, czy Windows posiada fork to sprawa jest dosyć skomplikowana. Owszem, jak najbardziej posiada, forka z prawdziwego zdarzenia... ale posiada go Windows NT, nie podsystem Windows. To po prostu odpowiednio użyty NtCreateProcess, tak więc fork z podsystemu POSIX nie jest wcale emulowany, działa dokładnie tak jak powinien.

Windows NT od początku był projektowany do wykonywania operacji asynchronicznie, ba, na poziomie kernela całe I/O jest asynchroniczne, co najwyżej z waitem na końcu.

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