社区
C语言
帖子详情
若干个纪录同时被修改的问题
hjd2357
2008-09-17 03:36:29
提醒:不是数据库操作。
条件:
1,有一万个数据
2,同一个数据同一时间只能被一个人修改,但是不同的数据可以同一时间被修改。
像下面的例子,数据A,B同时被人甲,人已修改,但是人丙不能和人甲同时修改数据A
数据 人甲 人已 人丙
A F 修改不可
B E
我本想用信号灯来控制,也就是说建立10000个信号灯来控制这1万个数据,
但是效率太底。
有没有别的好办法可以实现?
...全文
117
13
打赏
收藏
若干个纪录同时被修改的问题
提醒:不是数据库操作。 条件: 1,有一万个数据 2,同一个数据同一时间只能被一个人修改,但是不同的数据可以同一时间被修改。 像下面的例子,数据A,B同时被人甲,人已修改,但是人丙不能和人甲同时修改数据A 数据 人甲 人已 人丙 A F 修改不可 B E 我本想用信号灯来控制,也就是说建立10000个信号灯来控制这1万个数据, 但是效率太底。 有没有别的好办法可以实现?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
青葱岁月不可追
2008-09-22
打赏
举报
回复
up起来学习!~
hjd2357
2008-09-22
打赏
举报
回复
顶
czp_opensource
2008-09-18
打赏
举报
回复
我优先考虑,先教会人甲 人已 人丙 怎么写sql语句~
mhyx_2008
2008-09-18
打赏
举报
回复
mark
bgqy2000
2008-09-17
打赏
举报
回复
每个记录对应一个锁来控制,不过如果一个线程死的话,没办法重启电脑好了,哈哈
lann64
2008-09-17
打赏
举报
回复
难的还不止是加锁,window的不稳定是人人皆知的,其中一个线程要是死了,程序怎么办?
要是某次修改失误,数据如何恢复?
备份怎么控制?操作留痕怎么记录?
呵呵,自己做,难。
fibbery
2008-09-17
打赏
举报
回复
每一条记录都应该有一个唯一标识!
你可以构造一个唯一标识与互斥体的映射表:例如,唯一标识为记录号,用long型表示
std::map<long,CMutex> m_map_lock;
当有一条记录要被修改时,取得其记录号,并到映射表中查找,如果找到,则进入互斥体,当然,如果有人正在修改,此时是阻塞等待的;如果没有在映射表中找到该记录的互斥体,则创建互斥体。
在创建互斥体时存在一个问题,如果此时有另外一个线程也想创建互斥体怎么办,所以,为了避免同时创建互斥体,你还需要创建另一个互斥体,来同步多线程在映射表中增加和删除互斥体!具体你可以在考虑!
另外,也可以使用信号量,构造一个映射表:
std::map<long,CSemaphore> m_map_lock;
信号量的初值为1,最大值也为1。对于删除信号量时,只要其等待对象的数目为0时即可以删除,但同样涉及在添加、删除时的一个互斥操作!
如果,你的文件找不到一个唯一标识或者不容易找到或者不容易表示,那么也可以使用文件的偏移量作为标识!
我想方法会有很多种!
GoldenHunter
2008-09-17
打赏
举报
回复
以一个bit作为一个对应数据的锁,你有10000个数据,就需要1W个bit,对应bit置为1,
则不能修改,随机等待一会再访问,对应位置零,可以修改
这样空间小,速度快
wangdeqie
2008-09-17
打赏
举报
回复
触发器
K行天下
2008-09-17
打赏
举报
回复
挺复杂的
hai040
2008-09-17
打赏
举报
回复
建一个数组记录数据是否被修改,对这个数组加锁?
lann64
2008-09-17
打赏
举报
回复
自己写控制锁到数据级?还是在windows下实现?牛。
hjd2357
2008-09-17
打赏
举报
回复
补充说明:
是在windows下的实现。
不是linux下的实现
望江楼单词连连看V1.31
《望江楼单词连连看》是一个英语单词连连看小游戏,纯绿色免费软件,游戏开始后时会随机从词库中选出若干单词,要求玩家找出汉英对应的一对方块以消除,在不知不觉中单词已烂熟于胸了。软件小巧,无需安装,还可从U盘直接运行,使您随时随地都能边玩边记。 词库内含: 雅思、托福词汇、托福词组、GMAT、MBA、GRE、GRE必背、GRE逆序、金融英语、商务词汇、商务英语、外贸英语、计算机词汇、大学英语四六级词汇、大学词组、大学5级6级常用词组、大学英语自学教程、高教自考英语、研究生入学词汇、研究生入学词组、职称英语、新概念英语、巴朗词汇、懒人单词、太傻单词、分类词库、词根记忆法、常用前后缀。 本游戏中的词库放在Lib文件夹下,都是纯文本格式,以便您自已
修改
增删合并词库。其中有一个“词库列表.ini”文件,是以词库文件名(不包括扩展名)为内容的配置文件,如果你要增删词库,请在此文件中相应增减。你自已新增的外来词库应和游戏自带词库格式一样。 《望江楼单词连连看V1.31》是在经部分网友(包括程序员朋友)提供的反馈和建议下作了一些改进,希望能够满足大家的学习和娱乐。本游戏中的所有
纪录
都是作者本人自已打的,由于我的英语水平很一般(四级),所以成绩很差,希望不要见笑,不过四级单关的
纪录
还是不错的,希望你能破了。如要清空
纪录
,请将ScordList.ini内的内容删除即可,游戏的记时是采用取游戏起终两次系统时间之差来确定,故相当准确,不受系统性能的影响。 本小游戏由Borland公司的Delphi 7.0编制。 小灵通软件工作室(成都) 2007年2月26日
关于数据库主键和外键(终于弄懂啦)
一、什么是主键、外键: 关系型数据库中的一条记录中有
若干个
属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键 成绩表(学号,课程号,成绩) 成绩表中单一一个属性无法唯一
activereport报表控件的详细使用说明 使用ActiveReport报表若干
问题
activereport报表控件的详细使用说明使用ActiveReport报表若干
问题
activereport报表控件的详细使用说明 使用ActiveReport报表若干
问题
1.如何判断是否到报表的最后一页2.当报表数据源为空是,如果填充记录,也就是空报表(主要报表是以表格方式)第页20行数据!3.以表格形式做报表时,细节和本页合计部分有一部分空间,如何去掉,谢谢!=======...
python实现cc攻击_运维
纪录
:遭遇CC攻击,防御与查水表
原标题:运维
纪录
:遭遇CC攻击,防御与查水表博主之前完成了一个外包项目,最近两个月在负责这个项目的运维。这是一个web,主营不良资产催收O2O。由于可能存在竞争对手,有人试图攻击服务器。事件回顾24日下午3点,博主正在去拜访亲戚家的路上,这时公司的菜鸟开发者突然从QQ上发消息过来,问我服务器是不是被黑了。我认为这个可能性不大。这个项目由我亲手带领团队开发,后端使用的是Python+Flask+Po...
oracle触发器
一 Oracle触发器语法 触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的。 功能: 1、 允许/限制对表的
修改
2、 自动生成派生列,比如自增字段 3、 强制数据一致性 4、 提供审计和日志记录 5、 防止无效的事务处理 6、 启用复杂的业
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章