我是在写数据库的时候用的互斥信号量。
在线程函数外声明一个静态信号量:
static HANDLE m_hDBMutex;
MySocket::m_hDBMutex=CreateMutex(NULL,FALSE,NULL);
线程函数()
{ …… WaitForSingleObject(m_hDBMutex,5000); //跟这个等待时间有关么?我改了几个时间都是一样的结果
写库(写一条数据)
ReleaseMutex(m_hDBMutex);
……
}多线程,在写库之前都会等待信号量,写完库然后再释放。没理由会丢失数据,写不进去呀。
注: 一个线程会有上百条数据入库,我是在每一个线程的每一条数据入库时加的信号量。
那位大侠能帮帮忙,很急!!谢谢。
在线程函数外声明一个静态信号量:
static HANDLE m_hDBMutex;
MySocket::m_hDBMutex=CreateMutex(NULL,FALSE,NULL);
线程函数()
{ …… WaitForSingleObject(m_hDBMutex,5000); //跟这个等待时间有关么?我改了几个时间都是一样的结果
写库(写一条数据)
ReleaseMutex(m_hDBMutex);
……
}多线程,在写库之前都会等待信号量,写完库然后再释放。没理由会丢失数据,写不进去呀。
注: 一个线程会有上百条数据入库,我是在每一个线程的每一条数据入库时加的信号量。
那位大侠能帮帮忙,很急!!谢谢。
解决方案 »
- 2008年07月22日 周二 高新技术企业IT、电子 在海淀分部举行
- 串口数据接收不同步?
- 如何将视图中显示的图像保存为BMP格式
- 小弟想把在OpenGL中建立的人体三模型线框图掉如到编辑框里哈!~~请各位高手帮下小弟哈!感谢大家了哈!~~
- 关于应聘的问题啊!!谢谢光临啊!!
- 新手求救!请问我如何知道程序属于哪类工程呀
- Internet函数“InternetOpenUrl”的用法
- 请问长问短Unicode码中空格怎么表示?
- 如何将.pdf格式转换成word?
- 哪位大虾能用中文给小弟详细解释一下ScrollWindowEx函数?
- keybd_event发送组合键消息会产生多余按键消息,是函数的bug?
- The Ultimate Grid 控件有用过没有
这是多线程的例子!很简单,下载一个看看,然后再写!
不信的话,可以做一个测试,直接调用 Insert ,循环10000次,中间不加Sleep,看数据库到底入了多少条记录
问题可能在于你的SOCKET数据缓冲机制和数据库更新。
我是调用的存储过程,数据量也比较大,估计比较耗时。应该是这里出了问题,看来我需要sleep一下。
失败的话,事务会“回滚”,此事务的所有改动都将恢复到之前的情况,这是事务的一致性。另外,即便事务提交成功,还有一个称作“遗失更新”的情况。
设想如下场景:
一个事务执行 此处c=0 update A set c=1
马上另一个事务执行: 此处c=0 update A set c=2第一个事务执行完毕会发现:他的改动消失了。基于你的问题,我看首先,你要检查你的每个插入的事务是否成功提交了,如果成功,那么改动就一定已经加入数据库了,然后再看是否有“遗失更新”问题。另外,事务为什么会提交失败? 主要是死锁造成的。数据库一旦发现存在死锁,将从依赖环里挑选一个适合的事务,牺牲掉它。