多线程编程学习3

原创 2016年08月29日 16:47:49

实现多线程同步的方式:

Critical Section

用来实现“排他性占有”。适用范围是单一进程的各线程之间。他是:
一个局部性对象,不是一个核心对象。
快速而有效率
不能够同时有一个以上的critical section被等待。(只能同时一个)。
无法侦测是否已经被某个线程放弃。


Mutex
是一个核心对象,可以在不同的线程之间实现“排他性占有”,甚至即使那些线程分属不同进程,它是:
一个核心对象。
如果拥有mutex 的那个线程结束,则会产生一个“abandoned”错误信息。
可以使用Wait...()等待一个Mutex
可以具名,因此可以被其他进程开启。
只能被拥有它的那个线程释放(released).


Semaphore
被用来追踪有限的资源,它是:
一个核心对象。
没有拥有者。
可以具名,因此可以被其他进程开启
可以被任何一个线程释放(released)


Event Object
通常用于overlapped I/O(第6章),或用来设计某些自定义的同步对象。它是:
一个核心对象。
完全在程序掌控之下。
适用于设计新的同步对象。
“要求苏醒”的请求并不会被存储起来,可能会遗失掉。
可以具名,因此可以被其他进程开启。


Interlocked Variable
如果Interlocked...()函数被使用于所谓的spin-lock,那么它们只是一种同步机制。所谓spin-lock是一种busy loop,被预期在极短时间内执行,所以有最小的额外负担(overhead)。系统核心偶尔会使用它们。除此之外,interlocked variables 主要用于引用计数,它们:
允许对4字节的数值有些基本的同步操作,不需动用critical section 或mutex 之类。
在SMP(Symmetric Multi-Processors)操作系统中亦可有效运作。

java多线程编程学习chapter3

线程是操作系统中独立的个体,但是这些个体不经过特殊处理就不能成为一个整体,线程间的通信就是成为整体的必用方案之一 线程之间的通信 使用wait/notify实现线程间的通信 生产者/消费者模式的实现 ...

Posix多线程编程学习笔记(二)—线程属性(3)

六、线程的作用域        函数pthread_attr_setscope和pthread_attr_getscope分别用来设置和得到线程的作用域,这两个函数的定义如下:        ...
  • elbort
  • elbort
  • 2012年05月22日 10:33
  • 232

Posix多线程编程学习笔记(三)—信号灯(3)

4.posix有名信号灯应用于多进程 下面就是应用Posix有名信号灯的一个小程序。用它来限制访问共享代码的进程数目。 #include #include #include...
  • elbort
  • elbort
  • 2012年05月22日 10:52
  • 703

Posix多线程编程学习笔记(二)—线程属性(3)

六、线程的作用域        函数pthread_attr_setscope和pthread_attr_getscope分别用来设置和得到线程的作用域,这两个函数的定义如下:        ...

C++面向对象多线程编程[part 3].pdf

  • 2008年06月12日 13:59
  • 1.58MB
  • 下载

Delphi 多线程编程(3)

多线程程处理 1-1 多线程的基本概念 多线程带来如下好处:(自己阅读) 1)避免瓶颈; 2)并行操作; 3)提高效率; 在多线程中,通过优先级管理,可以使...

C++11并发/多线程编程系列(3)

转自:http://www.cnblogs.com/haippy/p/3237213.html std::mutex 详解Mutex 又称互斥量,C++ 11中与 Mutex 相关的类(包括锁类型)和...
  • GVFDBDF
  • GVFDBDF
  • 2016年09月14日 18:25
  • 588

多线程编程(3、多任务并发处理)

例:假设我们有个方法要执行100次,得到100次返回的结果总和。串行执行 static void Main(string[] args) { Se...

Java多线程编程3--线程间通信--类ThreadLocal与类InheritableThreadLocal的使用

类ThreadLocal的使用     变量值的共享可以使用public stati。变量的形式,所有的线程都使用同一个publicstatic变量。如果想实现每一个线程都有自己的共享变量该如何解决...

多线程编程3 - NSOperationQueue

一、简介 一个NSOperation对象可以通过调用start方法来执行任务,默认是同步执行的。也可以将NSOperation添加到一个NSOperationQueue(操作队列)中去执行,而且是异...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多线程编程学习3
举报原因:
原因补充:

(最多只允许输入30个字)