Article View: pl.comp.os.linux.programowanie
Article #72406Re: Wielowatki - jak to jest zrobione?
From: orcus
Date: Sat, 31 Dec 2011 10:15
Date: Sat, 31 Dec 2011 10:15
31 lines
2671 bytes
2671 bytes
On 30.12.2011, Adam Osuchowski <someone@somewhere.com> wrote: > Co znaczy ,,lekkie''? Tworzenie procesu przez fork() zawsze będzie trwało > zdecydowanie dłużej od stworzenia wątku przez pthread_create(). Pomagają > tu trochę czary optymalizacyjne w postaci vfork(), CoW czy wstrzymywanie > parenta dopóki potomek nie zawoła execve() ale zawsze wątki się szybciej > tworzy niż osobne procesy bo nie trzeba robić tylu rzeczy co przy forku > i na tym polega ich siła. A to, że w jądrze w zasadzie nie ma podziału > na procesy i wątki to jest już kwestią tej konkretnej implementacji. > > Co do popularności wątków, to się nie zgodzę. Wątki są wykorzystywane > w aplikacjach, które wymagają częstego tworzenia/niszczenia równoległych > instancji i po prostu osobne procesy zabijały by wydajność. Myślę, że > jeśli już, to powodem ew. braku popularności wątków jest większa > komplikacja kodu (chociaż biblioteki to upraszczają) i wymóg większej > dyscypliny programistycznej (żeby sobie wątki nawzajem nie zrobiły kuku). > To powoduje, że np. programiści bibliotek nie chcą tworzyć ich w wersji > thread-safe, a to z kolei powoduje, że inne biblioteki i aplikacje, które > taką bibliotekę wykorzystują, też muszą być jednowątkowe i problem narasta. W tym monecie dyskusji warto IMO wspomnieć o czymś takim jak userspacowe procesy. Implementacja którą znam to maszyna wirtualna erlang-a. Tworzy się to niesamowicie szybko. Procesy sobie nawzajem kuku nie zrobią. Niestety już sama maszyna wirtualna powoduje spory narzut na wydajność. Nie mniej jednak czasem jeśli budujemy system rozproszony ilość gratisów tego typu które dostajemy od języka przyćmiewa kwestie wydajności. Poza rozproszonymi systemami erlang ma niewiele zastosowań. -- Pozdrawiam orcus
Technical Details
Message-ID:
<slrnjfto0l.psn.orcus@orcus.wcss.wroc.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!pwr.wroc.pl!news.wcss.wroc.pl!not-for-mailReferences:
<4efa1cfe$0$1223$65785112@news.neostrada.pl> <20111230235700.6b8b4567@polsl.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!pwr.wroc.pl!news.wcss.wroc.pl!not-for-mail From: orcus@pwr.wroc.pl Newsgroups: pl.comp.os.linux.programowanie Subject: Re: Wielowatki - jak to jest zrobione? Date: Sat, 31 Dec 2011 10:15:21 +0000 (UTC) Organization: Politechnika Wroclawska Lines: 31 Message-ID: <slrnjfto0l.psn.orcus@orcus.wcss.wroc.pl> References: <4efa1cfe$0$1223$65785112@news.neostrada.pl> <20111230235700.6b8b4567@polsl.pl> NNTP-Posting-Host: orcus.wcss.wroc.pl Mime-Version: 1.0 X-Trace: z-news.wcss.wroc.pl 1325326521 6096 156.17.1.3 (31 Dec 2011 10:15:21 GMT) X-Complaints-To: abuse@news.pwr.wroc.pl NNTP-Posting-Date: Sat, 31 Dec 2011 10:15:21 +0000 (UTC) User-Agent: slrn/0.9.9p1 (Linux) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit