关于多线程同步的初步教程--Barrier的设计及使用

Barrier是一个多线程编程中经常要用到的同步工具,尤其多用于大数据量的计算过程中的同步。本文以广为流程的Doug Lea的concurrent工具包的Barrier实现为例,进行一点探讨。在Doug Lea的concurrent工具包中,Barrier是一个接口,在concurrent包中提供了两个Barrier的实现:CyclicBarrier和Rendezvous。下面是Barrier接口的定义:

  1. public interface Barrier {
  2.  
  3.  
  4.   /** 
  5.    * Return the number of parties that must meet per barrier
  6.    * point. The number of parties is always at least 1.
  7.    **/
  8.  
  9.   public int parties();
  10.  
  11.   /**
  12.    * Returns true if the barrier has been compromised
  13.    * by threads leaving the barrier before a synchronization
  14.    * point (normally due to interruption or timeout). 
  15.    * Barrier methods in implementation classes throw
  16.    * throw BrokenBarrierException upon detection of breakage.
  17.    * Implementations may also support some means
  18.    * to clear this status.
  19.    **/
  20.  
  21.   public boolean broken();
  22. }


    Barrier接口中的方法非常简单,parties()返回所有需要在屏障处同步的线程数;broken()返回一个标志,指示释放是否已被破坏。Barrier接口中并没有提供加入屏障的方法,而是在c和Rendezvous的Barrier实现中提供的。你可以会疑问,为什么不在Barrier接口中提供这些方法呢?因为这些实现的差异迥异,以至于很难在这些实现中提炼出一个共用的方法签名。比如,对于CyclicBarrier加入屏障的方法是:barrier(), 

  1. // CyclicBarrier.java
  2.   public int barrier() throws InterruptedException, BrokenBarrierException {
  3.     return doBarrier(false, 0);
  4.   }
  5.  
  6.   protected synchronized int doBarrier(boolean timed, long msecs) 
  7.     throws InterruptedException, TimeoutException, BrokenBarrierException  { 
  8.     
  9.     int index = --count_;
  10.  
  11.     if (broken_) {
  12.       throw new BrokenBarrierException(index);
  13.     }
  14.     else if (Thread.interrupted()) {
  15.       broken_ = true;
  16.       notifyAll();
  17.       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Barrier的安装和使用,你可以按照以下步骤进行操作: 1. 下载Barrier软件:你可以在Barrier的官方网站(https://github.com/debauchee/barrier)上找到最新的软件版本。根据你的操作系统选择合适的下载文件。 2. 安装Barrier:下载完成后,按照所选操作系统的安装步骤进行安装。通常情况下,你只需要双击安装程序并按照提示进行操作即可完成安装。 3. 配置Barrier:安装完成后,打开Barrier软件。你将看到一个主界面,其中包含了服务器和客户端的配置选项。 4. 配置服务器:在主界面中,选择“Configure Server”(配置服务器)选项。在服务器配置界面中,设置一个服务器名称,并选择要共享的屏幕位置。点击“Apply”(应用)保存配置。 5. 配置客户端:在主界面中,选择“Configure Client”(配置客户端)选项。在客户端配置界面中,输入服务器的IP地址或主机名,并设置客户端的名称。点击“Apply”保存配置。 6. 启动服务:在主界面中,点击“Start”(启动)按钮来启动Barrier服务。此时,服务器和客户端已经成功配置。 7. 连接设备:在客户端上运行Barrier,并在服务器列表中选择你配置的服务器。点击“Connect”(连接)按钮,客户端将会连接到服务器,并共享服务器的鼠标和键盘。 8. 调整设置(可选):你可以在Barrier的设置中进一步调整共享屏幕、鼠标和键盘的行为。例如,你可以设置屏幕共享的方向、鼠标滚动的速度等。 通过以上步骤,你可以完成Barrier的安装和配置,并且实现鼠标和键盘的共享。希望能对你有所帮助!如果你还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值