成员变量局部变量全局变量加锁问题_第1页
成员变量局部变量全局变量加锁问题_第2页
成员变量局部变量全局变量加锁问题_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、局部变量有自己的内存空间,相互直接是独立,互补干扰的,所以没必要加锁。而对于成员变量,和全局变量在只读不写的情况下也不要加锁。假如有一个线程对成员变量和全局变量进行写操作是就必须加锁。加锁是一个好习惯。 / / 取得线程数据包 / / 柜号 / 面号 / 层号 / 数据处理包 / 注意加锁,枚举元素的过程中,不可以对队列中元素进行增加或者删除 internal StorageDataThreadFactory GetStroageDataPackage(int cabinetNo, int sideNo, int layerNo) if (this.m_StoragehreadList = n

2、ull | this.m_StoragehreadList.Count = 0) return null; lock (m_StoragehreadList) for (int i = 0; i m_StoragehreadList.Count; i+) if (m_StoragehreadListi.CabinetNo = cabinetNo & m_StoragehreadListi.SideNo = sideNo & m_StoragehreadListi.LayerNo = layerNo) return m_StoragehreadListi; return null; m_Stor

3、agehreadList是一个成员变量,每个托盘创建一个线程。 / / 发送数据 / / 客户端编号 / 数据大小 / 数据包 / 错误码TODO. private int SendData(int clientId, int size, List sendPacketList) if (clientId = 0) return -2; if (sendPacketList = null | sendPacketList.Count = 0 | size = 0) return -3; /if (!m_KAIO.isRun) / return -2; /如果commPowerList个数大于1

4、,说明多个设备连接同一个中位机,即使用一个IP CommunicatePower commPower = FindCommunicatePower(clientId); if (commPower = null) return -1; if (commPower.ClientId = 0) return -4; bool result = false; lock (commPower.SyncRoot)/加锁 foreach (byte sendDataUnit in sendPacketList) if (sendDataUnit != null & sendDataUnit.Count()

5、 0 ? true : false; if (result) if (OnSendMessageCommand != null) OnSendMessageCommand(this, new AcqReceiveMessageStreamEvent(sendDataUnit, DateTime.Now, commPower.IPAdress, commPower.Port); else if (OnSendMessageCommand != null) OnSendMessageCommand(this, new AcqReceiveMessageStreamEvent(sendDataUnit, new DateTime(1970, 1, 1), commPower.IPAdress, commPower.Port); /if (result = false) / / Console.WriteLine(0,); / /Trace.WriteLine(CommonFuncti

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论