多线程对全局变量的操作

2025-05-08 19:39:26
推荐回答(1个)
回答1:

1. 初始化的时候, 如果线程A执行完毕的时候, 线程B还没有运行(相信这个时候C还没有创建), 那么g_str肯定存的是初始化时读取的值.

线程B要按button才调用, 如果一直没有按button, 就一直没有调用. 所以正常情况下你的程序都只有运行线程C, 你可以确认一下:
a) 初始化后线程A, 有没有结束
b) 不按button, g_str的赋值是否正确? 如果不按button都不正确, 那么你的线程C的赋值本身就有问题. 注意看你怎么判断赋值成功, 或者赋值错了? 在什么时间点判断g_str的赋值出错.
2. 你的情况线程B是随机发生的, 与线程C有冲突, 如果只是为了访问不冲突的话, 一般为g_str加个互斥就可以. 对g_str有特殊的使用点要求(对读取的时间点有要求)的话, 才要考虑同步的问题.