线程与在线程中的通信
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); // 向邮箱放入数据
以上是关于线程与在线程中的通信的主要内容,如果未能解决你的问题,请参考以下文章
Motan在服务provider端用于处理request的线程池
newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段