//pthread.cpp #include <pthread.h> #include <stdio.h> #include <unistd.h> typedef void *(*funcThread)(void*); //typedef void *(*funcThreadRoute)(void*); int Pthread_Create(funcThread func, void *param) { bool ret; pthread_t pth; pthread_attr_t attr; ret = pthread_attr_init(&attr); if(0 != ret) { pthread_attr_destroy(&attr); return -1; } ret = pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED); if(0 != ret) { pthread_attr_destroy(&attr); return -1; } ret = pthread_create(&pth,&attr,func,param); if(0 != ret) { pthread_attr_destroy(&attr); return -1; } pthread_attr_destroy(&attr); return 0; } void *printff(void* n) { int *p = (int *)n; while(1) { //自身的ID。pthread_t的类型为unsigned long int printf("n:%d pid:%lu\n",*((int *)n),pthread_self()); //printf("pid:%d\n",pthread_self()); sleep(1); (*p)++; } pthread_exit(NULL); } int main(int argc, char * argv [ ]) { int ret; int n = 100; ret = Pthread_Create(printff, (void *)(&n)); if(0 == ret) { printf("Pthread_Create success\n"); while(1); } return 0; }
|
|