🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #16699

Re: multithreading onder C++

#16699
From: Wim Dumon
Date: Fri, 14 Apr 2000 00:00
44 lines
3015 bytes
Erik Vanherck wrote:
> 
> > Multithreaden onder linux (threads zoals in : gesharede heap (data
> > segment), gescheiden stack, zelfde programma, maar toch apart
> > gescheduled) doe je met posix-threads (man pthread_create)
> > Nuttige informatie: linken met -lpthread en de rest van uw sources
> > compileren met -D_REENTRANT -D_PTHREADS, dat maakt libc en stl blij.
> > Steek alles wat met X te maken heeft in 1 en slechts 1 thread.
> 
> Hmmm, bedoel je dat ondertussen libc en stl in gcc eindelijk thread safe
> zijn ?? Of zijn de defines voor iets anders ?
> 

AFAIK heeft het threadsafe zijn van de stl te maken met het feit dat de
stl intern geen globale variabelen zal gebruiken om truuken uit te
halen, of dat die dan in elk geval wel safe gebruikt worden (bvb als uw
stl implementatie een memory pool zou hebben die hij zelf beheert in
plaats van altijd malloc aan te roepen, moet die threadsafe zijn).
Wanneer je daarentegen een bepaalde lijst in 2 threads wil gebruiken zal
je uiteraard zelf een locking mechanisme moeten voorzien. Edoch, onlangs
heb ik STL vieze dingen zien doen in een multithreaded programma (niet
zelf gemaakt, en ook niet geheel onderzocht wat de oorzaak was, kan best
zijn dat het niet aan stl lag)

> Ik heb er een jaar geleden mee gewerkt en toen was dat gewoon een miserie
> omdat je echt alles moest locken. De stl was redelijk thread safe maar op
> sommige plaatsen gingen de gcc libs serieus uit de bocht ;-)

Nog nooit problemen met glibc gehad. Sommige calls zijn nog altijd niet
reentrant (gethostbyname springs in mind) maar dat is een fundamenteel
probleem dat nooit opgelost kan worden. Gebruik daarom de reentrant
versies van die calls, (gethostbyname_r in dit geval iirc)

> En nota bene ,
> QT is alles behalve thread safe dus zoals hierboven gezegd alles wat aan QT
> GUI widgets komt echt in 1 thread steken anders zit je met problemen. Voor
> meer info zie maar op het message archive bij de trolls. Er zijn meer dan
> genoeg mensen die daar de mist in gegaan zijn.

Dit ligt niet aan qt maar aan X. En er zijn oplossingen maar het is
gewoon veel eenvoudiger om alles van X in 1 thread te steken ;-)

Groetjes,
Wim.
Technical Details
Message-ID: <38F6D5BD.B45B8A94@easics.be>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <38F57442.F20A0F45@student.kuleuven.ac.be> <38F6016B.EED1A4B2@easics.be> <8d54le$de0$1@newnews1.news.nl.uu.net>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,6b125efd35a6e602
X-Google-Attributes: gidfcea4,public
From: Wim Dumon <wim@easics.be>
Subject: Re: multithreading onder C++
Date: 2000/04/14
Message-ID: <38F6D5BD.B45B8A94@easics.be>
X-Deja-AN: 611025627
Content-Transfer-Encoding: 7bit
References: <38F57442.F20A0F45@student.kuleuven.ac.be> <38F6016B.EED1A4B2@easics.be> <8d54le$de0$1@newnews1.news.nl.uu.net>
X-Accept-Language: en
Content-Type: text/plain; charset=us-ascii
X-Complaints-To: newsmaster@kpnqwest.net
X-Trace: nreader1.kpnqwest.net 955700679 193.74.198.7 (Fri, 14 Apr 2000 10:24:39 MET DST)
Organization: Easics nv, Leuven, Belgium, http://www.easics.com
MIME-Version: 1.0
NNTP-Posting-Date: Fri, 14 Apr 2000 10:24:39 MET DST
Newsgroups: be.comp.programming