中英文翻译润色 论文质量预审评估 发表期刊推荐

与学术顾问沟通

热点职称论文:通信中间件实现的关键技术探讨__墨水学术,论文发(3)

分类:推荐论文 时间:关注:(1)

当前处于开放状态。由于在Linux中,互斥锁并不占用任何资源,因此LinuxThreads中的pthread_mutex_destroy()除了检查锁状态以外没有其他动作。
    2.互斥锁的属性 
      互斥锁的属性在创建锁的时候指定,在LinuxThreads实现中仅有一个锁类型属性,不同的锁类型在试图对一个已经被锁定的互斥锁加锁时表现不同。当前有四个值可供选择: 
    PTHREAD_MUTEX_TIMED_NP,这是缺省值,也就是普通锁。当一个线程加锁以后,其余请求锁的线程将形成一个等待队列,并在解锁后按优先级获得锁。这种锁策略保证了资源分配的公平性。 
     PTHREAD_MUTEX_RECURSIVE_NP,嵌套锁,允许同一个线程对同一个锁成功获得多次,并通过多次unlock解锁。如果是不同线程请求,则在加锁线程解锁时重新竞争。 
     PTHREAD_MUTEX_ERRORCHECK_NP,检错锁,如果同一个线程请求同一个锁,则返回EDEADLK,否则与PTHREAD_MUTEX_TIMED_NP类型动作相同。这样就保证当不允许多次加锁时不会出现最简单情况下的死锁。 
     PTHREAD_MUTEX_ADAPTIVE_NP,适应锁,动作最简单的锁类型,仅等待解锁后重新竞争。
3. 互斥锁的操作 
互斥锁操作主要包括加锁pthread_mutex_lock()、解锁pthread_mutex_unlock()和测试加锁pthread_mutex_trylock()三个,不论哪种类型的锁,都不可能被两个不同的线程同时得到,而必须等待解锁。对于普通锁和适应锁类型,解锁者可以是同进程内任何线程;而检错锁则必须由加锁者解锁才有效,否则返回EPERM;对于嵌套锁,文档和实现要求必须由加锁者解锁,但实验结果表明并没有这种限制,这个不同目前还没有得到解释。
4、条件变量
条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待“条件变量的条件成立”而挂起;另一个线程使“条件成立”(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。 
    1.创建和注销 
    条件变有静态动态两种创建方式,静态方式使PTHREAD_COND_INITIALIZER常量初始化;动态方式则调用pthread_cond_init()函数。注销一个条件变量需要调用pthread_cond_destroy(),只有在没有线程在该条件变量上等待的时候才能注销这个条件变量,否则将返回EBUSY。因为Linux实现的条件变量没有分配什么资源,所以注销动作只包括检查是否有等待线程。
2.等待和激发 
等待条件有两种方式:无时间设定等待pthread_cond_wait()和计时等待pthread_cond_timedwait(),其中计时等待方式如果在给定时刻前条件没有满足,则返回ETIMEOUT,结束等待。无论哪种等待方式,都必须和一个互斥锁配合,以防止多个线程同时请求pthread_cond_wait()的竞争条件(Race Condition)。
激发条件有两种形式: pthread_cond_signal()激活一个等待该条件的线程,存在多个等待线程时按入队顺序激活其中一个;而pthread_cond_broadcast()则激活所有等待线程。
5、读写锁
      通过读写锁,可以对受保护的共享资源进行并发读取和独占写入。读写锁是可以在读取或写入模式下锁定的单一实体。要修改资源,线程必须首先获取互斥写锁。必须释放所有读锁之后,才允许使用互斥写锁。
5.1 读写锁的属性
初始化读写锁属性
       pthread_rwlockattr_init使用实现中定义的所有属性的缺省值来初始化读写锁属性对象attr。读写锁属性对象初始化一个或多个读写锁之后,影响该对象

在线填学术需求

查询与领取

墨水学术是一家专业从事国内国外期刊学术论文发表指导,著作出版的平台,提供文章翻译、文章润色、文章预审、期刊推荐、发表支持、书号申请、出书指导等评职称相关学术成果服务。是您评职称学术成果指导首选平台。

AllSet微信公众号
说明:1、微信扫码或搜AllSet学术并关注
2、学术期刊、学术问题可以解答
3、学术指导服务助力轻松完成学术成果
Copyright © 2013 www.moshuixueshu.com,网站地图All Rights Reserved