#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
void * thread_function(void * arg)
{
int i ;
for (i=0; i<20; i++) {
printf("thread says hi!\n");
sleep(1);
}
return NULL;
}
int main(int argc, const char * argv[])
{
pthread_t mythread;
if (pthread_create(&mythread, NULL, thread_function, NULL)) {
printf("error creating thread.");
abort();
}
if (pthread_join(mythread, NULL)) {
printf("error joining thread");
abort();
}
return 0;
}
对于要使用posix线程库要引用头文件<pthread.h>,里面所有的函数都是以pthread_t开头。
struct _opaque_pthread_t { long __sig; struct __darwin_pthread_handler_rec *__cleanup_stack; char __opaque[__PTHREAD_SIZE__]; };
int pthread_create(pthread_t * __restrict,
const pthread_attr_t * __restrict,
void *(*)(void *),
void * __restrict);
int pthread_join(pthread_t , void **)
第一个参数为要等待的线程Id
第二个参数给指向返回值的指针提供一个位置,如果为NULL,则我们就不用关心其返回值是啥了
pthread_join就是等待另外的线程执行完成,进行线程合并。这个是有必要的,要注意对线程合理的释放,不然最后可能会导致创建失败。