[ECOS] Scheduler problem

liu hua rongye_liu@hotmail.com
Fri Apr 1 08:38:00 GMT 2005


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



More information about the Ecos-discuss mailing list