pike.git / src / threads.c

version» Context lines:

pike.git/src/threads.c:1:   #include "global.h" - RCSID("$Id: threads.c,v 1.160 2001/08/08 14:18:17 leif Exp $"); + RCSID("$Id: threads.c,v 1.161 2001/08/23 18:10:57 per Exp $");      PMOD_EXPORT int num_threads = 1;   PMOD_EXPORT int threads_disabled = 0;      #ifdef _REENTRANT   #include "threads.h"   #include "array.h"   #include "mapping.h"   #include "object.h"   #include "pike_macros.h"
pike.git/src/threads.c:579:   }         PMOD_EXPORT int count_pike_threads(void)   {    return num_pike_threads;   }      static void check_threads(struct callback *cb, void *arg, void * arg2)   { + #ifdef HAVE_GETHRTIME +  static long long last_; +  if( gethrtime()-last_ < 50000000 ) /* 0.05s slice */ +  return; +  last_ = gethrtime(); + #else    static int div_; -  if(div_++ & 255) return; +  if(div_++ & 255) +  return; + #endif      #ifdef DEBUG    if(thread_for_id(th_self()) != Pike_interpreter.thread_id)    fatal("thread_for_id() (or Pike_interpreter.thread_id) failed!\n")       if(Pike_interpreter.backlink != OBJ2THREAD(Pike_interpreter.thread_id))    fatal("Hashlink is wrong!\n");   #endif       THREADS_ALLOW();    /* Allow other threads to run */ -  + #ifdef HAVE_THR_YIELD +  thr_yield(); + #endif    THREADS_DISALLOW();      #ifdef DEBUG    if(thread_for_id(th_self()) != Pike_interpreter.thread_id)    fatal("thread_for_id() (or Pike_interpreter.thread_id) failed!\n")   #endif   }      TH_RETURN_TYPE new_thread_func(void * data)   {