int main()
{
  int i;
  pthread_t thread;

  pthread_barrier_init(&sBarrier, NULL, 2);
  pthread_key_create(&sKey, cleanupProc);
  pthread_create(&thread, NULL, threadProc, (void *)78);
  pthread_setspecific(sKey, (void *)42);
  pthread_barrier_wait(&sBarrier);
#ifdef __AVM2__
  {
    unsigned dummy;

    avm2_self_msleep(&dummy, 100);
  }
#endif
  for(i = 0; i < 5; i++)
  {
    printf("main specific: %d\n", (int)pthread_getspecific(sKey));
#ifdef __AVM2__
    if(i < 3)
      printf("impersonate specific: %d\n", (int)avm2_thr_impersonate(sTid, getspecThunk, &sKey));
#endif
    
    delaySome();
  }
  pthread_join(thread, NULL);
  pthread_key_delete(sKey);
  return 0;
}
Exemple #2
0
static void *threadProc(void *arg) {
  inline_as3("this[\"abc\"]=3333;");
  avm2_self_msleep((void*)&main_tid, 10);
  avm2_thr_impersonate(main_tid,print,NULL);
  avm2_wake((void*)&main_tid);
  // printf("thread. main id is %d\n",main_tid);
  // avm2_ui_thunk(print, NULL);
  return NULL;
}
static void delaySome()
{
#ifdef __AVM2__
  unsigned dummy;

  avm2_self_msleep(&dummy, 300);
#else
  sleep(1);
#endif
}
Exemple #4
0
int main()
{
  pthread_t thread;
  long id;

  thr_self(&id);
  pthread_create(&thread, NULL, threadProc, (void *)id);
  tprintf("sleeping!\n");
  avm2_self_msleep(&cond, 0);
  tprintf("ok!\n");
  pthread_join(thread, NULL);
  return 0;
}