线程与在线程中的通信

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程与在线程中的通信相关的知识,希望对你有一定的参考价值。

由于博主学习过linux c,对线程操作非常熟悉,故不再过多阐述。

========================================

线程  thread

在sv中线程的创立只有使用fork与join与其变体语句。

fork ...  join       创立线程
fork ...  join_any     等待线程块中有一个线程执行完毕后,主线程才继续执行
fork ...  join_none      不等待任何线程,主线程继续执行         
wait fork ;          在使用fork join 后等待所有线程  
disable name         禁止语句,通过name标号禁止一个线程或者是多个线程

========================================

system verilog中线程间的通信 IPC

(1)使用事件简单通信

event e1 ;  //    声明事件e1 ;
->e1 ;    //    触发事件e1
@(e1) 或者 wait(e1.triggered()) //  等待事件e1触发

(2)使用信号量进行资源分配:

semaphore sem ;   //    声明信号量句柄
sem = new(n) ;    //    声明n个锁
sem.try_get(1) ;  sem.get(1) ;   //     取得钥匙
sem.put(1) ;     //   释放钥匙

(3)使用邮箱:

mailbox mbx ;         //    声明邮箱句柄
mbx=new(n) ;          //    分配邮箱的容量大小
mbx.get(data);        //    从邮箱取出数据
mbx.peek(data);       //    从邮箱复制数据,但不取出
mbx.put(data);        //    向邮箱放入数据


以上是关于线程与在线程中的通信的主要内容,如果未能解决你的问题,请参考以下文章

多个用户访问同一段代码

Python 线程与 Linux 中的多处理

Motan在服务provider端用于处理request的线程池

串行提升线程在循环中加入与在主中并行

newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段

管理导航抽屉内片段中的线程(用于平滑动画)