首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更改全局数组的元素,以便所有线程查看

如何更改全局数组的元素,以便所有线程查看
EN

Stack Overflow用户
提问于 2018-11-29 04:49:12
回答 1查看 395关注 0票数 0

我正在创建一个程序,其中有多个线程使用相同的缓冲区。我将全局缓冲区创建为int *buffer,并使用malloc动态地在main()中声明大小。缓冲区的重点是让所有线程使用这个缓冲区,我想知道每个线程如何修改缓冲区中的某个位置,以便所有线程都能看到这个变化。

例如:

代码语言:javascript
运行
复制
int *buffer;

int main(int argc, char *argv[]){

    buffer = (int *)malloc(10 * sizeof(int));

}

现在,我想知道一个线程将在其中工作的函数,一个线程如何修改buffer的某个点,以便所有其他线程都能在全局数组buffer中看到这一变化。

在线程使用的函数中,我是否可以正常地更改这个位置?

例如:

代码语言:javascript
运行
复制
void *thread_work(void *unused){

    //beginning code

    buffer[0] = 2;

    //ending code

}

当我用这段代码编译时,它编译得很好,但我想知道现在是否所有的p线程都将buffer[0]设置为2。

我将使用互斥锁进行同步,这样就不会成为我问题的一部分,因为我知道如何实现这个问题。

谢谢您抽时间见我!

EN

Stack Overflow用户

回答已采纳

发布于 2018-11-29 05:01:31

线程没有特殊的函数或运算符来执行内存上的操作,无论是本地的、线程本地的还是共享的。他们只是使用相同的语法和技术,就像他们是程序中唯一的线程一样。

但它们确实需要正确地同步对共享变量的访问。您说您已经很熟悉这一点,所以我不会详细介绍,只是说如果没有同步,不同的线程确实不一定会看到对方写的东西。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53532021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档