.Net异步编程中的多线程访问共享资源问题(急!解决问题就给分)

时间:2021-09-10 21:12:20
我现在正在开发一个系统。主要是使用Socket异步调用方式完成客户端与远程设备间的通讯。
Socket异步调用下的多线程环境中,有一个共享的资源(缓存池),多个线程需要读写这个共享资源。考虑到系统的性能,并结合异步调用的情况,应该注意哪些资源的锁定控制?
我参考了很多资料,但都写的不是很具体。
盼高手出手相助!!谢谢

12 个解决方案

#1




http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/episode.aspx?newsID=1242261

#2


Mark!

#3


to 我参考了很多资料,但都写的不是很具体。

每个程序面对的应用不一样,所以都会有偏差,但大致的方法都是一样的。

#4


To downmoon(邀月) :
我写的是Winform程序。另外我提的不是异步编程的问题,而是异步编程中的多线程环境下对共享资源访问的控制。即如果高效的保证共享资源的线程安全。
Lock
SynchronizationAttribute
Monitor
ReaderWriterLock
等等方式。
因为我现在开发时间比较紧,没办法把这些方式都试一遍:(
共享资源的线程安全要求是允许同时多个阅读线程访问,但同时只能有一个线程写入(写入的同时不能有读取正在写入对象的操作)

最好能给俺一段源码示例。先谢谢了!

#5


自己顶一下

#6


给共享资源的访问封装起来,
再对访问的方法进行加lock即可.

#7


lock
{
   临界区
}

#8


但是假如是遍历集合时,lock锁定临界区时,会妨碍其他线程访问共享资源吧
我的目标是读的时候允许多线程同时进行(但不允许写),但写的时候不允许读并且只能有一个线程写入。

#9


切盼中...

#10


专业up

#11


搂住不地道呀,bluexingqing(蓝色)就发了个专业up就给那么多分,别人那么辛苦帮你回答才每个人5分,估计bluexingqing(蓝色)是你的马甲,我要举报

#12


mark

#1




http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/episode.aspx?newsID=1242261

#2


Mark!

#3


to 我参考了很多资料,但都写的不是很具体。

每个程序面对的应用不一样,所以都会有偏差,但大致的方法都是一样的。

#4


To downmoon(邀月) :
我写的是Winform程序。另外我提的不是异步编程的问题,而是异步编程中的多线程环境下对共享资源访问的控制。即如果高效的保证共享资源的线程安全。
Lock
SynchronizationAttribute
Monitor
ReaderWriterLock
等等方式。
因为我现在开发时间比较紧,没办法把这些方式都试一遍:(
共享资源的线程安全要求是允许同时多个阅读线程访问,但同时只能有一个线程写入(写入的同时不能有读取正在写入对象的操作)

最好能给俺一段源码示例。先谢谢了!

#5


自己顶一下

#6


给共享资源的访问封装起来,
再对访问的方法进行加lock即可.

#7


lock
{
   临界区
}

#8


但是假如是遍历集合时,lock锁定临界区时,会妨碍其他线程访问共享资源吧
我的目标是读的时候允许多线程同时进行(但不允许写),但写的时候不允许读并且只能有一个线程写入。

#9


切盼中...

#10


专业up

#11


搂住不地道呀,bluexingqing(蓝色)就发了个专业up就给那么多分,别人那么辛苦帮你回答才每个人5分,估计bluexingqing(蓝色)是你的马甲,我要举报

#12


mark