🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #72406

Re: Wielowatki - jak to jest zrobione?

#72406
From: orcus
Date: Sat, 31 Dec 2011 10:15
31 lines
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-mail
References: <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