gpt4 book ai didi

c - 解释它是如何工作的

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:40 25 4
gpt4 key购买 nike

现在我正在尝试学习多线程和互斥。但我不明白。例如,我将项目添加到另一个线程中的列表,然后是主程序:

GMutext* lock;
g_mutex_lock (lock);
g_list_prepend(list, "Some data");
g_mutex_unlock (lock);

在这种情况下,列表会发生什么情况?添加元素的列表,以及在 g_mutex_unlock 之前不能从主线程访问?还是我理解错了?

谢谢。

谢谢。

最佳答案

当互斥量被锁定时,任何其他想要锁定它的线程都会阻塞,直到互斥量被当前持有锁的线程解锁。这与列表对象无关 - 如果某个其他线程不尝试锁定同一个互斥锁,则可以尝试对列表执行任何操作,并且可能发生并发访问导致列​​表损坏。

所以锁定互斥体是一种惯例。调用者必须遵守约定——在访问 protected 数据对象之前尝试获取互斥锁。数据对象和互斥锁之间的映射在这里由开发人员决定。

关于c - 解释它是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3252830/

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