有没有办法强制线程拥有独立的地址空间?我想让许多线程使用局部变量运行循环 - 但它们似乎都共享相同的变量。
例如
for (i = args->start; i < args->end; i++) {
printf("%d\n", i);
if (quickFind(getReverse(array[i]), 0, size - 1)) {
printf("%s\n", array[i]);
//strcpy(array[i], "");
}
}
i
似乎是跨线程共享的。
最佳答案
线程共享其父进程的内存空间。这是他们的特点。如果您不希望发生这种情况,您可以使用 fork() 创建一个新进程,该进程将拥有自己的地址空间。
如果您决定使用 fork(),请记住,成功创建子进程后,它会向子进程返回 0,并向父进程返回子进程的 PID。
关于c - PThread 地址空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19172441/