c - PThread 地址空间

标签 c multithreading pthreads

有没有办法强制线程拥有独立的地址空间?我想让许多线程使用局部变量运行循环 - 但它们似乎都共享相同的变量。

例如

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/

相关文章:

c - pthreads:Linux 上 gcc 和 icc 之间的不一致

c - pthread_create 因 EAGAIN 而失败

使用 C 创建调试器

c - C 中 Exec 系列的用法

c - 对 C 代码中的多个位置使用相同的函数

c++ - 如何在 C++ 中实现交换器(会合模式)?

C 有人能告诉我这是怎么回事吗?

c# - SemaphoreSlim.WaitAsync 如何允许异步函数的顺序执行?

c++ - 如何从 C++ 中的线程开始(返回)

c++ - 用于使用类对象引用的 C++ 类函数的 Pthread