您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ sthread_create函数代码示例

51自学网 2021-06-03 08:23:47
  C++
这篇教程C++ sthread_create函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中sthread_create函数的典型用法代码示例。如果您正苦于以下问题:C++ sthread_create函数的具体用法?C++ sthread_create怎么用?C++ sthread_create使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了sthread_create函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: test_parallel

static void test_parallel(void){	sthread_t st[2];	sc_t sc[2];	int p[2];	void *ret;	if (pipe(p) == -1)		err(1, "pipe()");	sc_init(&sc[0]);	sc_fd_add(&sc[0], p[0], PROT_READ | PROT_WRITE);	if (sthread_create(&st[0], &sc[0], parallel_read, (void*) (long) p[0]))		err(1, "sthread_create()");	sc_init(&sc[1]);	sc_fd_add(&sc[1], p[1], PROT_READ | PROT_WRITE);	if (sthread_create(&st[1], &sc[1], parallel_write, (void*) (long) p[1]))		err(1, "sthread_create()");	if (sthread_join(st[0], &ret) == -1)		err(1, "sthread_join()");	if (sthread_join(st[1], NULL) == -1)		err(1, "sthread_join()");	if (ret != (void*) 0x666)		errx(1, "ret is %p", ret);	close(p[0]);	close(p[1]);}
开发者ID:Nukem9,项目名称:Dune,代码行数:34,


示例2: main

int main(int argc, char **argv){  int counter0 = 0;  int c1, c2;  sthread_init();  if (sthread_create(thread_1, (void*)0, 10) == NULL) {    printf("sthread_create failed/n");    exit(1);  }  if (sthread_create(thread_2, (void*)0, 1) == NULL) {    printf("sthread_create failed/n");    exit(1);  }  printf("created threads/n");  for(; counter0 < 30000000; counter0++);  c1 = counter1;  c2 = counter2;  printf("1: %i, 2: %i/n", c1, c2);  printf("2/1: %f/n", ((float)c2)/c1);  if (c2/c1 >= 6 && c2/c1 <= 14)    printf("PASSED/n");  return 0;}
开发者ID:joaomlneto,项目名称:so-sthreads,代码行数:32,


示例3: main

int main(int argc, char **argv){  printf("Testing sthread_create, impl: %s/n",	 (sthread_get_impl() == STHREAD_PTHREAD_IMPL) ? "pthread" : "user");	  sthread_init();      if (sthread_create(thread1, (void*)1, 10) == NULL) {    printf("sthread_create failed/n");    exit(-1);  }      if (sthread_create(thread2, (void*)1, 10) == NULL) {    printf("sthread_create failed/n");    exit(-1);  }  printf("in main/n");  sthread_sleep(10000);    printf("/ntwo threads runqueue active in priority 10/n");  sthread_dump();  sthread_sleep(10000);  printf("/ntwo threads runqueue active in priority 10/n");  sthread_dump();  printf("out main/n");  return 0;}
开发者ID:joaomlneto,项目名称:so-sthreads,代码行数:31,


示例4: main

int main(int argc, char **argv){  int j;   int count = argc > 1 ? atoi(argv[1]) : 100;   printf("Testing time slice and mutexes, impl: %s/n",      (sthread_get_impl() == STHREAD_PTHREAD_IMPL) ? "pthread" : "user");   sthread_init();   if (sthread_create(thread_1, (void*)count, 1) == NULL) {      printf("sthread_create failed/n");      exit(1);   }   if (sthread_create(thread_2, (void*)count, 1) == NULL) {      printf("sthread_create failed/n");      exit(1);   }   printf("created two threads/n");   printf("if this is the last line of output, time slices aren't working!/n");   while(!t1_complete || !t2_complete);   printf("PASSED/n");   return 0;}
开发者ID:Nesokas,项目名称:sampleProject,代码行数:28,


示例5: main

int main(void){        printf("executing main function yeasss!!!!!!!/n");        sthread_t p,q,r;        sthread_mutex_init(&m);        sthread_create(&p,f1,NULL);        sthread_create(&q,f2,NULL);        sthread_create(&r,f3,NULL);        sthread_join(-1);        printf("/nmain finished ans: %d /n",sum);        return 0;}
开发者ID:shuvojitNITW,项目名称:sthread,代码行数:12,


示例6: main

/* * The main function starts the two producers and the consumer, * the starts the thread scheduler. */int main(int argc, char **argv) {    queue = new_bounded_buffer(DEFAULT_BUFFER_LENGTH);    sthread_create(producer, (void *) 0);    sthread_create(producer, (void *) 1);    sthread_create(consumer, (void *) 0);    /*     * Start the thread scheduler.  By default, the timer is     * not started.  Change the argument to 1 to start the timer.     */    sthread_start(1);    return 0;}
开发者ID:Dama624,项目名称:Caltech-CS024,代码行数:17,


示例7: main

/* * Runs four different threads that return at different times in order * to ensure that they all terminate properly without error. */int main(int argc, char **argv) {    int a = 1;    int b = 2;    int c = 3;    int d = 4;    /* Running threads */    sthread_create(test, &a);    sthread_create(test, &b);    sthread_create(test, &c);    sthread_create(test, &d);    sthread_start();    return 0;}
开发者ID:averymarshall,项目名称:projects,代码行数:17,


示例8: main

int main(int argc, char **argv){  void *ret;  int i;  printf("Testing sthreads, impl: %s/n",	 (sthread_get_impl() == STHREAD_PTHREAD_IMPL) ? "pthread" : "user");	  sthread_init();  mon1 = sthread_monitor_init();  mon2 = sthread_monitor_init();      if (sthread_create(thread0, (void*)1, 10) == NULL) {    printf("sthread_create failed/n");    exit(-1);  }  sthread_monitor_enter(mon1);  for (i = 0; i < NUMBER; i++){    if ((thr[i] = sthread_create(thread1, (void*)i, 10)) == NULL) {      printf("sthread_create failed/n");      exit(-1);    }    sthread_yield();  }  for (i = 0; i < NUMBER; i++){    sthread_monitor_wait(mon1);  }      printf("in main/n");    sthread_monitor_exit(mon1);    sthread_sleep(10000);  sthread_monitor_enter(mon2);  sthread_monitor_signalall(mon2);  sthread_monitor_exit(mon2);    for (i = 0; i < NUMBER; i++){    sthread_join(thr[i], &ret);  }  printf("/nSUCCESS in creating %i threads/n", NUMBER);  printf("out main/n");  return 0;}
开发者ID:joaomlneto,项目名称:so-sthreads,代码行数:49,


示例9: rarch_main_data_thread_init

static void rarch_main_data_thread_init(void){   data_runloop_t *runloop  = rarch_main_data_get_ptr();   if (!runloop)      return;   runloop->lock            = slock_new();   runloop->cond_lock       = slock_new();   runloop->overlay_lock    = slock_new();   runloop->cond            = scond_new();   runloop->thread    = sthread_create(data_thread_loop, runloop);   if (!runloop->thread)      goto error;   slock_lock(runloop->lock);   runloop->thread_inited   = true;   runloop->alive           = true;   runloop->thread_code     = THREAD_CODE_ALIVE;   slock_unlock(runloop->lock);   return;error:   slock_free(runloop->lock);   slock_free(runloop->cond_lock);   slock_free(runloop->overlay_lock);   scond_free(runloop->cond);}
开发者ID:PCGeekBrain,项目名称:RetroArch,代码行数:31,


示例10: main

int main(int argc, char **argv){    int i;    long ret;    sthread_t testers[NTHREADS];    srand(0);	/* init the workload generator */    cacheinit();  /* init the buffer */    /* init blocks */    for (i = 0; i < NBLOCKS; i++) {        memcpy(blockData[i], (char *) &i, BLOCKSIZE);    }    /* start the testers */    for(i = 0; i < NTHREADS; i++) {        sthread_create(&(testers[i]), &tester, i);    }    /* wait for everyone to finish */    for(i = 0; i < NTHREADS; i++) {        ret = sthread_join(testers[i]);    }    printf("Main thread done./n");    return ret;}
开发者ID:MohanDhar,项目名称:cos318,代码行数:25,


示例11: main

int main(int argc, char **argv){	int checks;		printf("Testing sthread_mutex_*, impl: %s/n",		   (sthread_get_impl() == STHREAD_PTHREAD_IMPL) ? "pthread" : "user");		sthread_init();		mutex = sthread_mutex_init();	sthread_mutex_lock(mutex);		if (sthread_create(thread_start, (void*)1, 1) == NULL) {		printf("sthread_create failed/n");		exit(1);	}		/* Wait until the other thread has at least started,	 * to give it a chance at getting through the mutex incorrectly. */	while (ran_thread == 0) {		sthread_yield();	}   sthread_dump();		/* The other thread has run, but shouldn't have been	 * able to affect counter (note that this is not a great test	 * for preemptive scheduler, since the other thread's sequence	 * is not atomic). */   	assert(counter == 0);		/* This should let the other thread run at some point. */	sthread_mutex_unlock(mutex);		/* Allow up to 100 checks in case the scheduler doesn't	 * decide to run the other thread for a really long time. */	checks = 100;	while (checks > 0) {		sthread_mutex_lock(mutex);		if (counter != 0) {			/* The other thread ran, got the lock,			 * and incrmented the counter: test passes. */			checks = -1;		} else {			checks--;		}		sthread_mutex_unlock(mutex);				/* Nudge the scheduler to run the other thread: */		sthread_yield();	}		if (checks == -1) {		printf("sthread_mutex passed/n");	} else {		printf("*** sthread_mutex failed/n");	}	sthread_mutex_free(mutex);	return 0;}
开发者ID:joaomlneto,项目名称:so-sthreads,代码行数:60,


示例12: main

int main(int argc, char **argv) {  int arg = 1;  printf("Testing sthread_mutex_*, impl: %s/n",      (sthread_get_impl() == STHREAD_PTHREAD_IMPL) ? "pthread" : "user");    sthread_init();  mon = sthread_monitor_init();    sthread_monitor_enter(mon);  if (sthread_create(thread_start, (void*)&arg, 1) == NULL) {    printf("sthread_create failed/n");    exit(1);  }  printf("thread principal vai bloquear-se/n");  sthread_monitor_wait(mon);  printf("thread principal desbloqueada/n");  i = 2;  printf("i=2/n");  sthread_monitor_exit(mon);  if (i==2) {    printf("/nSUCESSO!/n");  } else {    printf("/nteste falhado.../n");  }  return 1;}
开发者ID:joaomlneto,项目名称:so-sthreads,代码行数:27,


示例13: sizeof

async_job_t *async_job_new(void){   async_job_t *ajob = (async_job_t*)calloc(1, sizeof(*ajob));      if (!ajob)      return NULL;   ajob->lock   = slock_new();   if (!ajob->lock)      goto error;   ajob->sem = ssem_new(0);   if (!ajob->sem)      goto error;   ajob->thread = sthread_create(async_job_processor, (void*)ajob);   if (!ajob->thread)      goto error;   return ajob;error:   if (ajob->lock)      slock_free(ajob->lock);   ajob->lock = NULL;   if (ajob->sem)      ssem_free(ajob->sem);   if (ajob)      free((void*)ajob);   return NULL;}
开发者ID:Kivutar,项目名称:RetroArch,代码行数:34,


示例14: rarch_main_data_thread_init

static void rarch_main_data_thread_init(void){   if (!g_data_runloop.thread_inited)      return;   g_data_runloop.lock            = slock_new();   g_data_runloop.cond_lock       = slock_new();   g_data_runloop.cond            = scond_new();#ifdef HAVE_OVERLAY   rarch_main_data_overlay_thread_init();#endif   g_data_runloop.thread    = sthread_create(data_thread_loop, &g_data_runloop);   if (!g_data_runloop.thread)      goto error;   slock_lock(g_data_runloop.lock);   g_data_runloop.thread_inited   = true;   g_data_runloop.alive           = true;   g_data_runloop.thread_code     = THREAD_CODE_ALIVE;   slock_unlock(g_data_runloop.lock);   return;error:   data_runloop_thread_deinit();}
开发者ID:mak77,项目名称:RetroArch,代码行数:29,


示例15: thread_init

static bool thread_init(thread_video_t *thr, const video_info_t *info, const input_driver_t **input,      void **input_data){   thr->lock = slock_new();   thr->alpha_lock = slock_new();   thr->frame.lock = slock_new();   thr->cond_cmd = scond_new();   thr->cond_thread = scond_new();   thr->input = input;   thr->input_data = input_data;   thr->info = *info;   thr->alive = true;   thr->focus = true;   size_t max_size = info->input_scale * RARCH_SCALE_BASE;   max_size *= max_size;   max_size *= info->rgb32 ? sizeof(uint32_t) : sizeof(uint16_t);   thr->frame.buffer = (uint8_t*)malloc(max_size);   if (!thr->frame.buffer)      return false;   memset(thr->frame.buffer, 0x80, max_size);   thr->target_frame_time = (retro_time_t)roundf(1000000LL / g_settings.video.refresh_rate);   thr->last_time = rarch_get_time_usec();   thr->thread = sthread_create(thread_loop, thr);   if (!thr->thread)      return false;   thread_send_cmd(thr, CMD_INIT);   thread_wait_reply(thr, CMD_INIT);   return thr->cmd_data.b;}
开发者ID:chiefdeputy,项目名称:RetroArch,代码行数:34,


示例16: test_fd

static void test_fd(void){	int p[2];	sc_t sc;	char buf[1024];	int rc;	sthread_t st;	if (pipe(p) == -1)		err(1, "pipe()");	sc_init(&sc);	sc_fd_add(&sc, p[1], PROT_WRITE);	if (sthread_create(&st, &sc, fd_st, (void*) (long) p[1]))		err(1, "sthread_create()");	if (sthread_join(st, NULL))		err(1, "sthread_join()");	rc = read(p[0], buf, sizeof(buf) - 1);	if (rc <= 0)		err(1, "read()");	buf[rc] = 0;	if (strcmp(buf, "bye") != 0)		errx(1, "buf is %s", buf);	close(p[0]);	close(p[1]);}
开发者ID:Nukem9,项目名称:Dune,代码行数:32,


示例17: sizeof

/** * autosave_new: * @path            : path to autosave file * @data            : pointer to buffer * @size            : size of @data buffer * @interval        : interval at which saves should be performed. * * Create and initialize autosave object. * * Returns: pointer to new autosave_t object if successful, otherwise * NULL. **/autosave_t *autosave_new(const char *path, const void *data, size_t size,      unsigned interval){   autosave_t *handle = (autosave_t*)calloc(1, sizeof(*handle));   if (!handle)      return NULL;   handle->bufsize      = size;   handle->interval     = interval;   handle->path         = path;   handle->buffer       = malloc(size);   handle->retro_buffer = data;   if (!handle->buffer)   {      free(handle);      return NULL;   }   memcpy(handle->buffer, handle->retro_buffer, handle->bufsize);   handle->lock         = slock_new();   handle->cond_lock    = slock_new();   handle->cond         = scond_new();   handle->thread       = sthread_create(autosave_thread, handle);   return handle;}
开发者ID:Ced2911,项目名称:RetroArch,代码行数:40,


示例18: rarch_main_data_thread_init

static void rarch_main_data_thread_init(void){   data_runloop_t *runloop  = rarch_main_data_get_ptr();   if (!runloop)      return;   runloop->lock            = slock_new();   runloop->cond_lock       = slock_new();   runloop->cond            = scond_new();#ifdef HAVE_OVERLAY   rarch_main_data_overlay_thread_init();#endif   runloop->thread    = sthread_create(data_thread_loop, runloop);   if (!runloop->thread)      goto error;   slock_lock(runloop->lock);   runloop->thread_inited   = true;   runloop->alive           = true;   runloop->thread_code     = THREAD_CODE_ALIVE;   slock_unlock(runloop->lock);   return;error:   data_runloop_thread_deinit(runloop);}
开发者ID:rglass01,项目名称:RetroArch,代码行数:31,


示例19: test_syscall

static void test_syscall(void){	sc_t sc;	tag_t t;	char *buf;	sthread_t st;	t = tag_new();	buf = smalloc(t, 1024);	assert(buf);	sc_init(&sc);	sc_mem_add(&sc, t, PROT_READ | PROT_WRITE);	sc_sys_add(&sc, SYS_open);	sc_sys_add(&sc, SYS_close);	if (sthread_create(&st, &sc, sys_st, buf))		err(1, "sthread_create()");	if (sthread_join(st, NULL))		err(1, "sthread_join()");	if (strncmp(buf, "root", 4) != 0)		errx(1, "buf is %s", buf);}
开发者ID:Nukem9,项目名称:Dune,代码行数:25,


示例20: calloc

static void *sunxi_gfx_init(const video_info_t *video,      const input_driver_t **input, void **input_data){   struct sunxi_video *_dispvars = (struct sunxi_video*)      calloc(1, sizeof(struct sunxi_video));   if (!_dispvars)      return NULL;   _dispvars->src_bytes_per_pixel = video->rgb32 ? 4 : 2;   _dispvars->sunxi_disp          = sunxi_disp_init("/dev/fb0");   /* Blank text console and disable cursor blinking. */   sunxi_blank_console(_dispvars);   _dispvars->pages = (struct sunxi_page*)calloc(NUMPAGES, sizeof (struct sunxi_page));   if (!_dispvars->pages)      goto error;   _dispvars->dst_pitch           = _dispvars->sunxi_disp->xres * _dispvars->sunxi_disp->bits_per_pixel / 8;   /* Considering 4 bytes per pixel since we will be in 32bpp on the CB/CB2/CT for hw scalers to work. */   _dispvars->dst_pixels_per_line = _dispvars->dst_pitch / 4;   _dispvars->pageflip_pending    = false;   _dispvars->nextPage            = &_dispvars->pages[0];   _dispvars->keep_vsync          = true;   _dispvars->menu_active         = false;   _dispvars->bytes_per_pixel     = video->rgb32 ? 4 : 2;   switch (_dispvars->bytes_per_pixel)   {      case 2:         pixman_blit = pixman_composite_src_0565_8888_asm_neon;         break;      case 4:         pixman_blit = pixman_composite_src_8888_8888_asm_neon;         break;      default:         goto error;   }   _dispvars->pending_mutex    = slock_new();   _dispvars->vsync_condition  = scond_new();   if (input && input_data)      *input = NULL;   /* Launching vsync thread */   _dispvars->vsync_thread     = sthread_create(sunxi_vsync_thread_func, _dispvars);   return _dispvars;error:   if (_dispvars)      free(_dispvars);   return NULL;}
开发者ID:luiseduardohdbackup,项目名称:RetroArch,代码行数:57,


示例21: Test1

void Test1(){    sthread_mutex_init(mut_ptr);    sthread_t thr1,thr2,thr3;    if (sthread_init() == -1){}    printf("Creating Thread 1/n");    if (sthread_create(&thr1, threadmain, (void *)1) == -1){}    sleep(2);    printf("Creating Thread 2/n");    if (sthread_create(&thr2, threadmain, (void *)2) == -1){}    sleep(2);    printf("Creating Thread 3/n");    if (sthread_create(&thr3, threadmain, (void *)3) == -1){}}
开发者ID:kennychetal,项目名称:sthread-mutex-lock,代码行数:19,


示例22: main

int main(int argc, char **argv){	sthread_t threads[NUM_TC];	sthread_t prodthr;	int i;	available_reqs = 0;		// initialize sthread lib		sthread_init();		//initialize filesystem	snfs_init(argc, argv);		   	// initialize SNFS layer       struct sockaddr_un servaddr;                		// initialize communications	srv_init_socket(&servaddr);				// initialize  monitor        mon = sthread_monitor_init();        	// create thread_consumer threads	for(i = 0; i < NUM_TC; i++) {		threads[i] = sthread_create(thread_consumer, (void*) NULL,1);		if (threads[i] == NULL) {			printf("Error while creating threads. Terminating.../n");			exit(-1);		}	}		// create producer thread	prodthr = sthread_create(thread_producer, (void*) NULL,1);			sthread_join(prodthr, (void**)NULL);	for(i = 0; i < NUM_TC; i++)		sthread_join(threads[i], (void **)NULL);	return 0;}
开发者ID:ABalanuta,项目名称:Thread_Scheduler,代码行数:41,


示例23: dsound_start_thread

static bool dsound_start_thread(dsound_t *ds){   if (!ds->thread)   {      ds->thread_alive = true;      ds->thread = sthread_create(dsound_thread, ds);      if (!ds->thread)         return false;   }   return true;}
开发者ID:Joonie86,项目名称:RetroArch,代码行数:12,


示例24: retro_task_threaded_init

static void retro_task_threaded_init(void){   running_lock  = slock_new();   finished_lock = slock_new();   worker_cond   = scond_new();   slock_lock(running_lock);   worker_continue = true;   slock_unlock(running_lock);   worker_thread = sthread_create(threaded_worker, NULL);}
开发者ID:Ezio-PS,项目名称:RetroArch,代码行数:12,


示例25: main

int main(int argc, char **argv){  int ii;  for(ii = 0; ii < NTHREADS; ii++){    sthread_create(&(threads[ii]), &go, ii);  }  for(ii = 0; ii < NTHREADS; ii++){    long ret = sthread_join(threads[ii]);    printf("Thread %d returned %ld/n", ii, ret);  }  printf("Main thread done./n");  return 0;}
开发者ID:DavidSchirduan,项目名称:ClassProjects,代码行数:14,


示例26: main

int main(int argc, char *argv[]){  sthread_t thr1, thr2;  if (sthread_init() == -1)    fprintf(stderr, "%s: sthread_init: %s/n", argv[0], strerror(errno));  if (sthread_create(&thr1, threadmain, (void *)1) == -1)    fprintf(stderr, "%s: sthread_create: %s/n", argv[0], strerror(errno));  if (sthread_create(&thr2, threadmain, (void *)2) == -1)    fprintf(stderr, "%s: sthread_create: %s/n", argv[0], strerror(errno));  sleep(1);  sthread_wake(thr1);  sleep(1);  sthread_wake(thr2);  sleep(1);  sthread_wake(thr1);  sthread_wake(thr2);  sleep(1);  return 0;}
开发者ID:marshallshen,项目名称:android-os-hack,代码行数:24,


示例27: main

int main(int argc, char **argv) {    sthread_t thread = NULL;    int * res = (int *) malloc(sizeof(int));    printf("Testing sthread_mutex_*, impl: %s/n",           (sthread_get_impl() == STHREAD_PTHREAD_IMPL) ? "pthread" : "user");    sthread_init();    if ((thread = sthread_create(thread_start, (void *) NULL, 1)) == NULL) {        printf("sthread_create failed/n");        exit(1);    }    sthread_join(thread, (void**)&res);    printf("/nteste concluido: consultar dump*.tsv/n");    return 1;}
开发者ID:joaomlneto,项目名称:so-sthreads,代码行数:16,


示例28: sc_init

static void *launch_sthread(stcb_t cb, void *arg){	sc_t sc;	sthread_t st;	void *ret;	sc_init(&sc);	if (sthread_create(&st, &sc, cb, arg))		err(1, "sthread_create()");	if (sthread_join(st, &ret))		err(1, "sthread_join()");	return ret;}
开发者ID:Nukem9,项目名称:Dune,代码行数:16,


示例29: btstack_set_poweron

static void btstack_set_poweron(bool on){   if (!btstack_try_load())      return;   if (on && !btstack_thread)      btstack_thread = sthread_create(btstack_thread_func, NULL);   else if (!on && btstack_thread && btstack_quit_source)   {#ifdef __APPLE__      CFRunLoopSourceSignal(btstack_quit_source);#endif      sthread_join(btstack_thread);      btstack_thread = NULL;   }}
开发者ID:matthijsberk,项目名称:RetroArch,代码行数:16,


示例30: disc_cdaccess

CDIF_MT::CDIF_MT(CDAccess *cda) : disc_cdaccess(cda), CDReadThread(NULL), SBMutex(NULL), SBCond(NULL){   try   {      CDIF_Message msg;      RTS_Args s;      SBMutex            = slock_new();      SBCond             = scond_new();      UnrecoverableError = false;      s.cdif_ptr = this;      CDReadThread = sthread_create((void (*)(void*))ReadThreadStart_C, &s);      EmuThreadQueue.Read(&msg);   }   catch(...)   {      if(CDReadThread)      {         sthread_join((sthread_t*)CDReadThread);         CDReadThread = NULL;      }      if(SBMutex)      {         slock_free((slock_t*)SBMutex);         SBMutex = NULL;      }      if(SBCond)      {         scond_free((scond_t*)SBCond);         SBCond = NULL;      }      if(disc_cdaccess)      {         delete disc_cdaccess;         disc_cdaccess = NULL;      }      throw;   }}
开发者ID:Warriors-Blade,项目名称:beetle-psx-libretro-Simias,代码行数:45,



注:本文中的sthread_create函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ sti函数代码示例
C++ stgwrite函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。