pthread_create 地雷点

 #include <pthread.h>

       int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                          void *(*start_routine) (void *), void *arg);

这个函数怎么用这里不多介绍,网上随便搜都是。

这里只是想记录今天自己刚踩的一个雷点:

用pthread_create 创建线程,

需要注意的是该函数的最后一个参数:void *arg,

此参数放的是传递给被创建线程的参数的地址,在调用完pthread_create后该指针所指的内存并不会被复制,即使在创建线程里带了copy流程,如果在调用完pthread_create后没有机制保障该内存已经被复制或使用完成的情况下直接释放或修改arg所指向的内存可能会导致被创建线程获取该内存出错,或引起page fault。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章