/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
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
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408923
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste