Article View: be.comp.programming
Article #14993Re: pthread in c++
From: Wim Dumon
Date: Wed, 06 Dec 2000 00:00
Date: Wed, 06 Dec 2000 00:00
41 lines
1644 bytes
1644 bytes
delirium wrote:
>
> als ik multithreading wil doen met pthread.h,
> hoe kan ik dan als thread functie een memberfunctie van een c++-class
> gebruiken ?
>
Dat kan je alleen met static member functions.
struct A
{
static void *foo(void *);
};
pthread_create(a, b, A::foo, c);
Wanneer je een method van een welbepaalde class instantiation wil oproepen
moet je een wrapper functie (mag een static member functie zijn) schrijven:
struct A
{
static void *pthread_entry(void *p)
{
reinterpret_cast<A *>(p)->entry();
return 0;
}
void entry();
};
...
{
A c; // Thread entry moet c.entry() zijn
pthread_create(a, b, A::pthread_entry, &c);
}
De reden dat dit zo moet is dat de this pointer op de juiste manier op de
stack terecht moet komen. Er bestaan ook een hoop wrapper classes om
pthreads in C++ objecten te steken, misschien heb je daar iets aan ?
Groetjes,
Wim.
Technical Details
Message-ID:
<3A2E7C06.686FDDCE@easics.be>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<3A2E7208.11982655@student.kuleuven.ac.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,c74e054707a478eb X-Google-Attributes: gidfcea4,public From: Wim Dumon <wim@easics.be> Subject: Re: pthread in c++ Date: 2000/12/06 Message-ID: <3A2E7C06.686FDDCE@easics.be> X-Deja-AN: 701835528 Content-Transfer-Encoding: 7bit References: <3A2E7208.11982655@student.kuleuven.ac.be> X-Accept-Language: en Content-Type: text/plain; charset=us-ascii X-Complaints-To: abuse@Belgium.EU.net X-Trace: nreader1.kpnqwest.net 976124934 193.74.198.7 (Wed, 06 Dec 2000 18:48:54 MET) Organization: Easics nv, Leuven, Belgium, http://www.easics.com MIME-Version: 1.0 NNTP-Posting-Date: Wed, 06 Dec 2000 18:48:54 MET Newsgroups: be.comp.programming