我一直在谷歌上搜索互斥锁教程/示例,但似乎找不到适合我需要的情况(或者更有可能我找到了,但从未意识到如何将其应用于我的情况,因为我目前并不完全理解它)。
我有一个具有 2 个回调函数的 C++ dll。回调函数是从第 3 方程序调用的。每个回调函数将信息添加到全局变量(单独的全局变量)。还有 2 个其他函数,每个函数都使用这些全局变量。
3rd 方程序有很多线程,所以回调函数一直被调用。其他 2 个函数由用户手动调用。全局变量最终会同时被 2 个事物访问并导致崩溃。
现在全局变量在这样的类中
class Global
{
public:
static CString & get_allscores() { static CString get_allscores; return get_allscores; }
static CString & get_allplayers() { static CString allplayers; return allplayers; }
};
有人可以向我展示一个关于如何将互斥锁与两个都访问其中一个全局变量的函数一起使用的快速示例吗?
谢谢
编辑:
这样的情况怎么办
CString allchat; //global variable
void function1()
{
allchat += "test";
}
void function2()
{
cout << allchat;
}
如果这些函数被许多线程重复且无序地调用,我可以添加一个互斥对象以使其对多线程友好吗?
到目前为止,我的计划是在程序启动时创建一个没有所有者的互斥体。然后当每个函数被调用时,它将获得所有权并在函数结束时释放它。这是正确的做法吗?