当前位置:  技术问答>linux和unix

求解 unix的锁

    来源: 互联网  发布时间:2017-01-26

    本文导语:  strict foo *fh[NHASH];    //hash表 pthread_mutex_t hashlock = PTHREAD_MUTEX_INITIALIZER;//互斥量 为什么我有一个线程锁住hashlock这个互斥量以后,其它的线程就不能对fh[NHASH]进行访问了? hashlock和fh[NHASH]有什么关系吗? 锁住以...

strict foo *fh[NHASH];    //hash表
pthread_mutex_t hashlock = PTHREAD_MUTEX_INITIALIZER;//互斥量

为什么我有一个线程锁住hashlock这个互斥量以后,其它的线程就不能对fh[NHASH]进行访问了?
hashlock和fh[NHASH]有什么关系吗?

锁住以后其它线程能不能访问fh[NHASH]是不是取决于我实现的对fh[NHASH]操作的函数所决定的?
apue我看晕乎了,求高人指点

|
一个是锁,一个是资源
两者其实没有必然的联系

多个进程/线程互斥访问资源完全是一种君子行为

|
这不是强制性的, 想要互斥的线程需要主动调用pthread_mutex_lock/unlock.

|


这看你程序具体情况具体分析, 你先理解这些东西才能运用, 这样问也没什么用.

|
互斥量hashlock是用来保护临界资源fh[NHASH]不被两个或多个进程访问的; 
 如果,你不把hashlock和fh[NHASH]放在仪器,那么两者没有任何关系;
 你想保护i被互斥访问,只要将i也放进互斥量保护的代码段,也可以实现互斥访问;

 保护的机制非常简单,对hashlock的操作是原子操作,如果有一个进程访问fh[NHASH],就让hashlock=0;
 别的进程发现 hashlock==0,就无法再访问fh[NHASH]。前一个进程,访问结束后,恢复hashlock=1,于是,正在等待访问的进程就可以被唤醒,而进行访问了。
  可见,有了互斥量hashlock就可以保护资源fh[NHASH]不被两个或以上的进程访问。

|

 如果不判断hashlock,就去访问,那就意味可能发生冲突。程序员应该避免这样做。
 为了防止这种现象,也可以将互斥量和与其保护的代码段封装在一起,这样就不会发生意外了。

|

  自己定义的锁,不属于原子操作,所以必须使用系统的类型定义,例如:pthread_mutex_t等。

|
另外,互斥量的定义,还包含一个阻塞的队列,不是一个简单的整形数或一个布尔量。

    
 
 

您可能感兴趣的文章:

  • HP UNiX ACC 参数求解
  • 高分求解,unix终端上的串口怎么标示
  • 【一个关于Linux/Unix程序开发的问题,很久了,没有人解决】 ---------UP有分,高分求解
  • POSIX.1要求system忽略SIGINT和SITQUIT,阻塞SIGCHLD,求解释。UNIX环境高级编程 system函数
  • 求解vmware下的unix系统
  • 100求解:如何在UNIX环境下创建一个新的端口号?另:能告之如何在WINDOWS2000环境下创建一个新的端口号就更好了!
  • Unix高级环境编程一有关dup2的习题,求解释!!!!
  • 重分求解,UNIX下的消息队列非常失败,经常发生堵塞现象,现改用FIFO,但FIFO又得自己设计消息,请高手指点
  • 求解unix系统用root权限mkdir新文件夹,再用chown设权限成功,但是不能用!!!
  • 【高分求解】 请帮帮忙,修改这个UNIX shell程序 【UP有分】 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  • 〖高分求解〗★★★★★【C语言,用UNIX的 Semaphore 写并发程序.---测试素数】★★★★★〖up有分〗
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求解 求解 求解
  • Linux Shell编程从初学到精通 第四章课后习题2 求解
  • 有限元求解器 GetDP
  • 偏微分方程求解工具箱 DUNE
  • linux命令求解释....
  • 偏微分方程求解框架 Overture
  • 100分求解!!!!!
  • 编译内核时候出现的问题,求解
  • makefile求解
  • 求解ucos ii的一句代码
  • 求助linux下mysql 求解!
  • 求解啊,centos下 shutdown -h now 无效??
  • 求解windows下硬盘安装linux如何用linux引导
  • 关于linux shell的一个不明白的地方。求解
  • solaris安装不上,求解.............
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket
  • ubuntu12.04求解
  • 100分求解如何查看内存最高使用值!!
  • 高分求解---如何在DOS下查杀欢乐时光病毒?用哪种杀毒软件?Windows98没法进入了!
  • 求解struct的大小


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3