1
所獲得的資源。下面是代碼:釋放我讀到pthread_detach,它通過釋放線程獲得的資源,當它被調用,所以我做了一個小實驗,但即使卸下線程後,它看起來像它的資源不釋放由一個線程
#define SIZE 2048
void *func(void *arg);
int main()
{
void *x;
int i;
pthread_t tid;
pthread_attr_t attr,attr2;
int fp=open("SharedMemWithMutex.c",O_RDONLY);
pthread_attr_init(&attr2);
pthread_create(&tid,&attr2,func,&fp);
pthread_join(tid,&x);
i=*(int *)x;
fprintf(stderr,"BEFORE DETACH: read bytes are %d\n",i);
pthread_detach(tid);
i=*(int *)x;
fprintf(stderr,"AFTER DETACH: read bytes are %d\n",i);
return 0;
}
void *func(void *arg)
{
int fp=*(int *)arg;
char buf[SIZE];
int *readbytes=(int *) malloc(sizeof(int));
*readbytes=read(fp,buf,SIZE);
return readbytes;
}
也'pthread_detach'不釋放資源,它只是標誌着線程沾邊,因此家長不必加入。 – iabdalkader