Article View: be.comp.programming
Article #16699Re: multithreading onder C++
From: Wim Dumon
Date: Fri, 14 Apr 2000 00:00
Date: Fri, 14 Apr 2000 00:00
44 lines
3015 bytes
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-mailReferences:
<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