1. 创建:
// callback fun
void* thread_run(void* param){
while (YES) {
// wait
//pthread_cond_wait(&g_cond, &g_mutex);
static int i = 0;
NSLog(@"runing i = %d\n", i++);
sleep(1);
}
NSLog(@"runing end");
return NULL;
}
pthread_t g_handle = 0;
pthread_attr_t g_attr;
int iRet = pthread_attr_init(&g_attr);//iRet = pthread_create_suspended_np(&g_handle, &g_attr, thread_run, self);
iRet = pthread_create(&g_handle, nil, thread_run, self);
2. 锁和信号量的创建
static pthread_mutex_t g_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t g_cond = PTHREAD_COND_INITIALIZER;
// start
pthread_cond_signal(&g_cond);
3. 中断以及结束
// 如果是直接中断 正在执行的函数体,例如while循环
pthread_cancel(g_handle);
// 如果是结束线程
pthread_cancel(g_handle);
//pthread_detach(g_handle);
pthread_exit(nil);
g_handle = NULL;
但是在线程函数外使用
pthread_exit(nil); 时, 会使当前函数阻塞,进一步研究中。。