关于共享和互斥

52huier 2004-08-27 04:55:35
今天我想了想共享和互斥,越想越乱,转不出来了。
到底什么时候必须实现互斥?难道使用任何公共资源都要互斥使用?比如我打开一个文件?
还有,我两个程序同时操作数据库里的一个表呢?这时候数据库是否提供一些互斥的支持呢?
那位牛人启发我一下????
...全文
160 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
产品老唐 2004-08-27
  • 打赏
  • 举报
回复
SQL提供共享锁和互斥锁,可以利用
52huier 2004-08-27
  • 打赏
  • 举报
回复
不知道你所指的“现实”是啥意思哦。你编过很多多进程或者多线程的程序吗?
许多时候,你用了锁,但你自己未必知道,比如你调用一个系统API,那里边很可能就有锁操作。

哦,我没编过多少多线程的程序,这不刚接触就有问题了嘛,嘿嘿,那多个程序同时运行也应该算多进程吧?我就是指这种情况。
我就是搞不清,这种互斥哪些是系统已经实现了,哪些要自己实现。。。。。
52huier 2004-08-27
  • 打赏
  • 举报
回复
可是不能保证别的程序中间修改呀——那就不是只读资源。ROM/BIOS可以被看成只读资源。

那不就是说我平时写一个文件都要加个锁,防止别人的程序不知道我在写。我平时也没见人这么写呀。。。。
晨星 2004-08-27
  • 打赏
  • 举报
回复
“可现实中我没见到这么多使用锁的例子呀。”

不知道你所指的“现实”是啥意思哦。你编过很多多进程或者多线程的程序吗?
许多时候,你用了锁,但你自己未必知道,比如你调用一个系统API,那里边很可能就有锁操作。
晨星 2004-08-27
  • 打赏
  • 举报
回复
可是不能保证别的程序中间修改呀——那就不是只读资源。ROM/BIOS可以被看成只读资源。

数据库的支持是怎样的?
通常是透明等待,等另外一个任务完成了再进行。
sandrowjw 2004-08-27
  • 打赏
  • 举报
回复
数据库的支持是怎样的?如果操作的表被加锁,程序是“透明“地等待呢,还是返回错误呢???
------------------------------------------------------------------------------
会等到饿死

虽然是只读,可是不能保证别的程序中间修改呀,也许后者应该加锁,可现实中我没见到这么多使用锁的例子呀。。。
-----------------------------
因为确定不能修改了才会不加锁
52huier 2004-08-27
  • 打赏
  • 举报
回复
首先,谢谢楼上的
不过还有点问题。。。。
不一定,比如只读资源。
虽然是只读,可是不能保证别的程序中间修改呀,也许后者应该加锁,可现实中我没见到这么多使用锁的例子呀。。。
数据库的支持是怎样的?如果操作的表被加锁,程序是“透明“地等待呢,还是返回错误呢???
晨星 2004-08-27
  • 打赏
  • 举报
回复
难道使用任何公共资源都要互斥使用?
不一定,比如只读资源。

比如我打开一个文件?
就看应用程序本身的意图了。

这时候数据库是否提供一些互斥的支持呢?
当然会,否则两个进程同时改,很可能就改乱套了。

到底什么时候必须实现互斥?
说简单点,只要不互斥可能造成混乱甚至灾难的场合都需要互斥。

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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