Thread overview | |||||
---|---|---|---|---|---|
|
June 23, 2003 threads | ||||
---|---|---|---|---|
| ||||
I have something like this: class MyThread : Thread { ... } ... MyThread a,b,c; ... I want to run a,b and c, all at the same time. How can I do it? If I use a.run(), etc., they will execute, wait until finishing and then go to the next instruction. If I use a.start(), etc., they will execute, continue to the next instruction, but the program will exit without waiting for them to finish. If after a.start()... I use a.wait()..., they will end in the order I specify. So let's suppose I'm simulating a Formula 1 race, and I specify the cars speed by the priority of the thread. There's no way (for me) to simulate it properly because of the given reasons. Am I missing something? ------------------------- Carlos Santander --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.491 / Virus Database: 290 - Release Date: 2003-06-18 |
June 23, 2003 Re: threads | ||||
---|---|---|---|---|
| ||||
Posted in reply to Carlos Santander B. | I think your problem is that the current thread is returning from main before the other threads finish executing, causing the program to end. So, you'd have to make the current thread wait for the others like Thread.getThis().wait(); but you'll have to resume this thread some time or the program will stay frozen, so maybe you can synchronize a variable that indicates how many threads (out of a b c) have finished, and the last one resume the main thread. "Carlos Santander B." <carlos8294@msn.com> wrote in message news:bd7jrl$1fog$1@digitaldaemon.com... > I have something like this: > > class MyThread : Thread { ... } > ... > MyThread a,b,c; > ... > > I want to run a,b and c, all at the same time. How can I do it? If I use a.run(), etc., they will execute, wait until finishing and then go to the next instruction. If I use a.start(), etc., they will execute, continue to the next instruction, but the program will exit without waiting for them to > finish. If after a.start()... I use a.wait()..., they will end in the order > I specify. So let's suppose I'm simulating a Formula 1 race, and I specify the cars speed by the priority of the thread. There's no way (for me) to simulate it properly because of the given reasons. Am I missing something? > > ------------------------- > Carlos Santander > > > --- > Outgoing mail is certified Virus Free. > Checked by AVG anti-virus system (http://www.grisoft.com). > Version: 6.0.491 / Virus Database: 290 - Release Date: 2003-06-18 > > |
June 23, 2003 Re: threads | ||||
---|---|---|---|---|
| ||||
Posted in reply to Carlos Santander B. |
"Carlos Santander B." wrote:
>
> I have something like this:
>
> class MyThread : Thread { ... }
> ...
> MyThread a,b,c;
> ...
>
> I want to run a,b and c, all at the same time. How can I do it? If I use a.run(), etc., they will execute, wait until finishing and then go to the next instruction. If I use a.start(), etc., they will execute, continue to the next instruction, but the program will exit without waiting for them to finish. If after a.start()... I use a.wait()..., they will end in the order I specify. So let's suppose I'm simulating a Formula 1 race, and I specify the cars speed by the priority of the thread. There's no way (for me) to simulate it properly because of the given reasons. Am I missing something?
My first try used Thread.nthreads:
/* thread1.d (C) Helmut Leitner 2003, PD */
import thread;
Thread t1;
Thread t2;
int i;
int print1(void *p)
{
int n=10;
while(n--) {
printf("T1.n=%d (%d)\n",n,i);
Sleep(20);
}
return 0;
}
int print2(void *p)
{
int n=20;
while(n--) {
printf("T2.n=%d (%d)\n",n,i);
Sleep(10);
}
return 0;
}
int main (char[][] args)
{
printf("START\n");
t1=new Thread(&print1,null);
t2=new Thread(&print2,null);
t1.start();
t2.start();
do {
for(i=1; i<1000000000; i++) {}
printf("w");
Sleep(1);
} while(Thread.nthreads>1)
printf("END\n");
return 0;
}
--
Helmut Leitner leitner@hls.via.at Graz, Austria www.hls-software.com
|
Copyright © 1999-2021 by the D Language Foundation