有关于两个进程互斥的问题,急!!!!!

abysswon 2008-04-10 10:55:40
现在有一个问题要是解决对数据库的同一个表有两个进程操作的问题,
我写了如下的代码在两个进程处,这样行吗?ThreadLock是一个静态类,里面有一个字符串做标记。receive 和send是两个状态。

#region 进行线程互斥

bool bFlag = true;
while (bFlag)
{
if (ThreadLock.Locker != "RECEIVE") //ThreadLock.Locker如果正处在接收状态
{
bFlag = false;
}
Application.DoEvents();
}
//在操作完成后还要有一个标记翻转操作
#endregion


ThreadLock.Locker = "RECEIVE"; //在这里翻转互斥锁的标记
...全文
373 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xd_639 2008-04-11
  • 打赏
  • 举报
回复
LS的MS不行,10楼正解!
gomoku 2008-04-10
  • 打赏
  • 举报
回复
You might use a named mutex:


System.Threading.Mutex mutex = new Mutex(false, "MyMutext");

mutex.WaitOne();
// things to be synchronized across process
mutex.ReleaseMutex();

cengyidao 2008-04-10
  • 打赏
  • 举报
回复
不懂你想干吗,既然是静态字符串,怎么锁?
静态字符串在声明的时候就已经赋值了,并且是不可改变的,后面当然可以用了。
soaringbird 2008-04-10
  • 打赏
  • 举报
回复
对数据库的表加锁,你用进程间的互斥做什么?应该从数据库的访问上比如sql语句来考虑
abysswon 2008-04-10
  • 打赏
  • 举报
回复
用lock锁一个静态字符串在两个地方也可以吧?
cengyidao 2008-04-10
  • 打赏
  • 举报
回复
变量使用规则:
如果是重复使用变量,先声明,在需要的地方赋值及改变其值;
如果是一次性使用变量,使用时声明、赋值,使用完销毁释放内存。
cengyidao 2008-04-10
  • 打赏
  • 举报
回复
这种情况一般都是标记控制。
目前没发现比这个更好的方法。
abysswon 2008-04-10
  • 打赏
  • 举报
回复
还有其他的方法吗?
cengyidao 2008-04-10
  • 打赏
  • 举报
回复
每次运行到 bool bFlag = true; 内存里就会重新分配一个变量bFlag,并赋成true值。
应该把变量定义到最前面,程序运行时只能运行到一次的地方。
KK3K2005 2008-04-10
  • 打赏
  • 举报
回复
sychronized(某个object){
代码
}
这样确保同步
abysswon 2008-04-10
  • 打赏
  • 举报
回复
是两个不同的进程,不是多线程啊。
jinmiwa 2008-04-10
  • 打赏
  • 举报
回复
lock
gngnandgngn 2008-04-10
  • 打赏
  • 举报
回复
Mutex
hanjun1024 2008-04-10
  • 打赏
  • 举报
回复
楼上正解,进程同步用Mutex,线程同步用Monitor

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧