我有一个关于pthread的问题,当我在一个带有malloc的线程中创建一个变量然后将它的指针传递给一个共享结构,即fifo时,线程1传递的指针是否会被thread2访问?
请注意,我必须编写上述问题的代码,我只是想更好地理解线程,下面就是我正在考虑的问题.环境是pthread,c和linux
据我所知,线程正在共享其父进程的内存,如果是这种情况,则下面的内容应该是正确的.
void *thread-1(void *pointer)
{
int *intp = malloc(4);
send_to_fifo(intp);
}
void *thread-2(void *pointer)
{
int *iptr;
iptr = read_from_fifo();
do_something(iptr);
free(iptr);
}
Run Code Online (Sandbox Code Playgroud)
线程1传递的指针是否会被thread2访问?
是的:由于所有线程都在公共存储空间中运行,因此允许这样做.
malloc
,free
和其他内存管理函数默认是线程安全的,除非使用编译NO_THREADS
.