This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Scheduler problem
- From: "liu hua" <rongye_liu at hotmail dot com>
- To: ecos-discuss at sources dot redhat dot com
- Date: Fri, 01 Apr 2005 16:37:56 +0800
- Subject: [ECOS] Scheduler problem
- Bcc:
In the tewothreads example program, if I don't use cyg_thread_delay() in
the 'simple_program' thread, or if use cyg_thread_delay(0), the two threads
cannt be scheduled normally. The result is only one thread can run, and
another thread is hung.
thread program:
void simple_program(cyg_addrword_t data)
{
int message = (int) data;
int delay;
printf("Beginning execution; thread data is %d\n", message);
//cyg_thread_delay(200);
for (;;) {
//delay = 0+ (rand() % 0);
/* note: printf() must be protected by a
call to cyg_mutex_lock() */
cyg_mutex_lock(&cliblock); {
printf("Thread %d: and now a delay of %d clock ticks\n",
message, delay);
}
cyg_mutex_unlock(&cliblock);
cyg_thread_delay(0);
}
}
Output result:
Thread 0: and now a delay of 0 clock ticks
Thread 0: and now a delay of 0 clock ticks
Thread 0: and now a delay of 0 clock ticks
Thread 0: and now a delay of 0 clock ticks
...
So, in my ecos application which have many thread have follow program:
while (1)
{
...
}
If must I use cyg_thread_delay(delay) in it?
ie:
while (1)
{
...
cyg_thread_delay(delay);
}
If I must use cyg_thread_delay() in these threads, the performance of ecos
will be a bad thing.
_________________________________________________________________
享用世界上最大的电子邮件系统― MSN Hotmail。 http://www.hotmail.com
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss