免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1932 | 回复: 9
打印 上一主题 下一主题

关于全局对象和多线程? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-04-27 16:29 |只看该作者 |倒序浏览
多线程程序只是利用全局对象对全局对象中的成员变量的读取操作,会不会产生问题?

论坛徽章:
0
2 [报告]
发表于 2003-04-27 17:35 |只看该作者

关于全局对象和多线程?

如果只是读取的话,拿应该是没有问题的。

论坛徽章:
0
3 [报告]
发表于 2003-04-27 18:28 |只看该作者

关于全局对象和多线程?

嗯,不写就行

否则需要同步锁

论坛徽章:
0
4 [报告]
发表于 2003-04-28 09:35 |只看该作者

关于全局对象和多线程?

多线程必定会使用到写的部分,不然的话用多线程也没有什么太大意义,建议你学会使用同步锁进行处理

论坛徽章:
0
5 [报告]
发表于 2003-04-28 10:26 |只看该作者

关于全局对象和多线程?

加上读写锁,什么都OK,不过是在不是很要求速度的前提先。

论坛徽章:
0
6 [报告]
发表于 2003-04-29 13:17 |只看该作者

关于全局对象和多线程?

是这样的,服务器(多线程的)发送命令给客户端,客户端需要回应,因此,需要用到多线程和同步,所有的发送信息存储到一个全局数据段中,在等到客户端回应后,将相关信息删除,在一段时间内,没有回应则服务器重新发送。

有什么办法可以不用同步锁吗?

论坛徽章:
0
7 [报告]
发表于 2003-04-29 17:44 |只看该作者

关于全局对象和多线程?

如果你的设计中不会有两个线程同时改变某个资源
那么就不用

如果同时改变,
那么要使用

论坛徽章:
0
8 [报告]
发表于 2003-04-30 17:34 |只看该作者

关于全局对象和多线程?

下面是一个静态的全局对象:
如果在多线程中利用Modify函数操作改对象中的m_StatusArr成员变量,是否在Modify函数中进行锁定,还是在多线程中对该静态的全局变量进行锁定?

class single
{
public:
        ~single();
        int Init();
        int Release();
        int Modify(Status status);

        static         single* Instance();
protected:
        CDevice_Manager();

private:
        CCriticalSection m_listManipulationSection; //锁
       
        static single* _instance;
        StatusArr        m_StatusArr;
};

论坛徽章:
0
9 [报告]
发表于 2003-04-30 17:53 |只看该作者

关于全局对象和多线程?

如果会同时调用的话就锁定
两种锁定都可以
但是
在notify中锁定比较好一点
因为以后代码的管理比较方便

论坛徽章:
0
10 [报告]
发表于 2003-05-08 13:57 |只看该作者

关于全局对象和多线程?

最好是在类成员函数中进行锁定修改,然后接锁,这样操作的粒度小,性能好
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP