/
Forside
/
Teknologi
/
Udvikling
/
C/C++
/
Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn
*
Kodeord
*
Husk mig
Brugerservice
Kom godt i gang
Bliv medlem
Seneste indlæg
Find en bruger
Stil et spørgsmål
Skriv et tip
Fortæl en ven
Pointsystemet
Kontakt Kandu.dk
Emnevisning
Kategorier
Alfabetisk
Karriere
Interesser
Teknologi
Reklame
Top 10 brugere
C/C++
#
Navn
Point
1
BertelBra..
2425
2
pmbruun
695
3
Master_of..
501
4
jdjespers..
500
5
kyllekylle
500
6
Bech_bb
500
7
scootergr..
300
8
gibson
300
9
molokyle
287
10
strarup
270
Semaphore og synkronisering
Fra :
Kim Led Bendtsen
Dato :
24-06-03 15:33
Kim Led Bendtsen (
24-06-2003
)
Kommentar
Fra :
Kim Led Bendtsen
Dato :
24-06-03 15:56
Niels Dybdahl (
26-07-2003
)
Kommentar
Fra :
Niels Dybdahl
Dato :
26-07-03 22:36
Normalt skal begge tråde have adgang til semaforen. Det kan jeg ikke se at
de har.
Niels Dybdahl
"Kim Led Bendtsen" <klbe00@control.auc.dk> skrev i en meddelelse
news:Pine.GSO.4.53.0306241620100.29621@prosit.control.auc.dk...
> Jeg bruger et bibliotek Zthread til at indkapsle pthreads i noget OO kode.
> Men jeg har et problem som jeg mener er en fejl i biblioteket. Problemet
> opstår når jeg venter på en semaphore med en tråd t1 uden at main
> processen kalder join på denne t1 tråd. Jeg poster noget kode som giver
> fejlen og det skulle være nok til at overskue om princippet jeg bruger er
> korrekt.
> Zthreads minder lidt om java's tråde så det burde gøre det lidt lettere
> at læse.
>
> --main.cpp
> #include "zthread/Thread.h"
> #include "zthread/Mutex.h"
> #include "zthread/Semaphore.h"
> #include "zthread/Condition.h"
> using namespace ZThread;
> using namespace std;
> #include "test1.cpp"
> #include "test2.cpp"
> int main (){
> Test1 *vente= new Test1();
> Test2 *joiner= new Test2();
> try{
> Thread t1,t2;
> t1.run(vente);
> t2.run(joiner);
> t2.join();
> }
> catch(Synchronization_Exception& e) {
> cerr << e.what() << endl;
> }
> return 0;
> }
>
> ---test1.cpp
> #include "zthread/Thread.h"
> #include "zthread/Mutex.h"
> #include "zthread/Condition.h"
> #include <semaphore.h>
>
> using namespace ZThread;
> using namespace std;
>
> class Test1 : public Runnable {
> void run() throw() {
> cout << "før wait" << endl;
> Semaphore *sem= new Semaphore(0);
> sem->wait();
> cout << "efter wait" << endl;
> }
> };
>
> ---test2.cpp
> #include "zthread/Thread.h"
> #include "zthread/Mutex.h"
> #include "zthread/Semaphore.h"
> #include "zthread/Condition.h"
> using namespace ZThread;
> using namespace std;
> class Test2 :public Runnable {
> void run() throw() {
> }
> };
> Hvis jeg laver t1.join() istedet for t2.join() stopper programmet ikke..
> i Test1 kaster wait() kaldet et Synchronization_Exception.
>
> Skal man have kaldt join på en tråd som skal kunne vente med wait??
> Er der nogen som dette giver mening for?? :)
>
> Mvh
>
> --
> Kim Led Bendtsen
Søg
Alle emner
Teknologi
Udvikling
C/C++
Indstillinger
Spørgsmål
Tips
Usenet
Reklame
Statistik
Spørgsmål :
177558
Tips :
31968
Nyheder :
719565
Indlæg :
6408923
Brugere :
218888
Månedens bedste
Årets bedste
Sidste års bedste
Copyright © 2000-2024 kandu.dk. Alle rettigheder forbeholdes.