成员变量局部变量全局变量加锁问题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

局部变量有自己的内存空间,相互直接是独立,互补干扰的,所以没必要加锁。而对于成员变量,和全局变量在只读不写的情况下也不要加锁。假如有一个线程对成员变量和全局变量进行写操作是就必须加锁。加锁是一个好习惯。///summary///取得线程数据包////summary///paramname=cabinetNo柜号/param///paramname=sideNo面号/param///paramname=layerNo层号/param///returns数据处理包/returns///remarks注意加锁,枚举元素的过程中,不可以对队列中元素进行增加或者删除/remarksinternalStorageDataThreadFactoryGetStroageDataPackage(intcabinetNo,intsideNo,intlayerNo){if(this.m_StoragehreadList==null||this.m_StoragehreadList.Count=0)returnnull;lock(m_StoragehreadList){for(inti=0;im_StoragehreadList.Count;i++){if(m_StoragehreadList[i].CabinetNo==cabinetNo&&m_StoragehreadList[i].SideNo==sideNo&&m_StoragehreadList[i].LayerNo==layerNo){returnm_StoragehreadList[i];}}}returnnull;}m_StoragehreadList是一个成员变量,每个托盘创建一个线程。///summary///发送数据////summary///paramname=clientId客户端编号/param///paramname=size数据大小/param///paramname=buf数据包/param///returns错误码TODO.../returnsprivateintSendData(intclientId,intsize,Listbyte[]sendPacketList){if(clientId=0)return-2;if(sendPacketList==null||sendPacketList.Count=0||size=0)return-3;//if(!m_KAIO.isRun)//return-2;//如果commPowerList个数大于1,说明多个设备连接同一个中位机,即使用一个IPCommunicatePowercommPower=FindCommunicatePower(clientId);if(commPower==null)return-1;if(commPower.ClientId==0)return-4;boolresult=false;lock(commPower.SyncRoot)//加锁{foreach(byte[]sendDataUnitinsendPacketList){if(sendDataUnit!=null&&sendDataUnit.Count()=0)continue;result=ISendBin(commPower.ClientId,sendDataUnit,sendDataUnit.Length)0?true:false;if(result){if(OnSendMessageCommand!=null)OnSendMessageCommand(this,newAcqReceiveMessageStreamEvent(sendDataUnit,DateTime.Now,commPower.IPAdress,commPower.Port));}else{if(OnSendMessageCommand!=null)OnSendMessageCommand(this,newAcqReceiveMessageStreamEvent(sendDataUnit,newDateTime(1970,1,1),commPower.IPAdress,commPower.Port));}//if(result==false)//{//Console.WriteLine({0},123456789);//}//Trace.WriteLine(CommonFunction.ByteArrayToHexStr(sendDataUnit));}}return0;}枚举或者在使用公共资源时,如果这个公共资源被某个线程进行写操作,那么就必须加锁。

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功