gpt4 book ai didi

c - 在 C 中的线程之间共享数据

转载 作者:太空宇宙 更新时间:2023-11-04 08:56:42 24 4
gpt4 key购买 nike

我有以下 main.c:

#include <unistd.h> //has thread calls for fork()
#include <stdio.h>

struct globalInfo{
int x;
};

int do this()
{
info.x++;
printf("%d\n",info.x);
return 0;
}
int main{
struct globalInfo info = { .x = 2};
for(int i = 0 ; i < 5 ; i++)
{
if(fork() = 0)
{
dothis();
}
}
}

这不是我的确切代码,但我的问题在这里更容易证明。

现在上述函数的输出是:

3
3
3
3
3

我想要的是:

3
4
5
6
7

如何在线程之间共享这个结构?似乎每个线程都只是在创建自己的结构副本并操纵自己的副本。我尝试将指向信息结构的指针作为参数传递给 dothis(),但这也没有解决问题。我也试过将信息初始化放在主要之外;那也不管用..

帮助将不胜感激。

最佳答案

fork() 不会创建线程,它会创建进程,进程将具有完全不同的地址空间,因此即使是全局数据也不会共享数据。

如果您正在考虑线程,请使用 pthreads如果您正在寻找需要使用 IPC 机制的流程

关于c - 在 C 中的线程之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16583146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com