/** * @file thread.c * @author myusgun */ #include "cf_thread.h" #include "cf_mutex.h" #include CF_Mutex_Ctx globalMutex; int worker (void * arg) { if (CF_Mutex_Lock (globalMutex) < 0) { // for critical section // error } fprintf (stderr, "here is critical section !\n"); if (CF_Mutex_Unlock (globalMutex) < 0) { // for critical section // error } return 0; } int main (void) { CF_Thread_Ctx tid[10]; int i = 0; if (CF_Mutex_CreateCtx (&globalMutex) < 0) { // error } for (i = 0 ; i < 10 ; i++) { if (CF_Thread_CreateCtx (&tid[i], worker, NULL) < 0) { // error } } for (i = 0 ; i < 10 ; i++) { if (CF_Thread_Start (tid[i]) < 0) { // error } } for (i = 0 ; i < 10 ; i++) { if (CF_Thread_Join (tid[i]) < 0) { // block // error } } for (i = 0 ; i < 10 ; i++) { if (CF_Thread_DestroyCtx (tid[i]) < 0) { // error } } if (CF_Mutex_DestoryCtx (globalMutex) < 0) { // error } return 0; }