18. 作业和线程的 Boost 包
JOBQUE boost 模块实现了 :ref:`JOBQUE <stdlib_jobque>`附带的辅助宏和函数的集合。
所有函数和符号都在 “jobque_boost” 模块中,使用 require 来访问它。
require daslib/jobque_boost
18.1. Function annotations
- NewJobMacro
此宏处理 new_job 和 new_thread 调用。 调用相应地替换为`new_job_invoke`和`new_thread_invoke`。 将为 Lambda 生成克隆 infastructure,并在新上下文中调用该 lambda。
18.2. 调用
- new_job(l: lambda<>)
argument |
argument type |
---|---|
l |
lambda<> |
- 创建新作业。
从当前上下文克隆新上下文。
Lambda 被克隆到新上下文。
新作业已添加到作业队列中。
调用新作业后,将在作业线程上的新上下文上调用 Lambda。
请注意,如果 job-que 存在,则永远不会调用此函数。
- new_thread(l: lambda<>)
argument |
argument type |
---|---|
l |
lambda<> |
- 创建新线程
从当前上下文克隆新上下文。
Lambda 被克隆到新上下文。
创建新线程。
lambda 在新线程上的新上下文上调用。
请注意,如果存在 job-que,则永远不会调用
18.3. 迭代
- for_each(channel: Channel? const; blk: block<(res:auto(TT) const#):void> const)
for_each returns auto
Warning
This function is deprecated.
argument |
argument type |
---|---|
channel |
jobque::Channel ? const |
blk |
block<(res:auto(TT) const#):void> const |
从通道读取 Input(按推送顺序)并在每个 Importing 上调用 Block。 通道耗尽后停止(内部 Entry 计数器为 0) 这可能会同时发生在多个线程或作业上。
- each(channel: Channel?; tinfo: auto(TT) const)
each returns auto
Warning
此函数已弃用。
argument |
argument type |
---|---|
channel |
|
tinfo |
auto(TT) const |
这个迭代器用于按照 Channel 的推送顺序迭代 Channel。 一旦 Channel 耗尽,iterator 就会停止(内部 entry counter 为 0) 迭代可以同时发生在多个线程或作业上。
18.4. 传递数据
- push_clone(channel: Channel? const; data: auto(TT) const)
push_clone returns auto
argument |
argument type |
---|---|
channel |
jobque::Channel ? const |
data |
auto(TT) const |
克隆数据并将值推送到通道(在末尾)
- push(channel: Channel? const; data: auto? const)
push returns auto
argument |
argument type |
---|---|
channel |
jobque::Channel ? const |
data |
auto? const |
将值推送到通道(末尾)
18.5. 内部捕获详细信息
- capture_jobque_channel(ch: Channel? const)
capture_jobque_channel returns jobque::Channel ?
argument |
argument type |
---|---|
ch |
jobque::Channel ? const |
此函数用于捕获 jobque 使用的通道。
- capture_jobque_job_status(js: JobStatus? const)
capture_jobque_job_status returns jobque::JobStatus ?
argument |
argument type |
---|---|
js |
jobque::JobStatus ? const |
此函数用于捕获 jobque 使用的作业状态。
- release_capture_jobque_channel(ch: Channel? const)
argument |
argument type |
---|---|
ch |
jobque::Channel ? const |
该函数用于释放 jobque 使用的频道。
- release_capture_jobque_job_status(js: JobStatus? const)
argument |
argument type |
---|---|
js |
jobque::JobStatus ? const |
该函数用于释放 JobQue 使用的 Job Status。
18.6. 未分类
- capture_jobque_lock_box(js: LockBox? const)
capture_jobque_lock_box returns jobque::LockBox ?
argument |
argument type |
---|---|
js |
jobque::LockBox ? const |
此函数用于捕获 Jobque 使用的锁箱。
- release_capture_jobque_lock_box(js: LockBox? const)
argument |
argument type |
---|---|
js |
jobque::LockBox ? const |
此函数用于释放 Jobque 使用的 lock box。
- gather(ch: Channel? const; blk: block<(arg:auto(TT) const#):void> const)
gather returns auto
argument |
argument type |
---|---|
ch |
jobque::Channel ? const |
blk |
block<(arg:auto(TT) const#):void> const |
从通道读取 Input(按推送顺序)并在每个 Importing 上调用 Block。 之后 input 被消耗
- gather_ex(ch: Channel? const; blk: block<(arg:auto(TT) const#;info:TypeInfo const? const;var ctx:Context):void> const)
gather_ex returns auto
argument |
argument type |
---|---|
ch |
jobque::Channel ? const |
blk |
block<(arg:auto(TT) const#;info: rtti::TypeInfo const? const;ctx: rtti::Context ):void> const |
从通道读取 Input(按推送顺序)并在每个 Importing 上调用 Block。 之后 input 被消耗
- gather_and_forward(ch: Channel? const; toCh: Channel? const; blk: block<(arg:auto(TT) const#):void> const)
gather_and_forward returns auto
argument |
argument type |
---|---|
ch |
jobque::Channel ? const |
toCh |
jobque::Channel ? const |
blk |
block<(arg:auto(TT) const#):void> const |
从通道读取 Input(按推送顺序)并在每个 Importing 上调用 Block。 之后 input 被消耗
- peek(ch: Channel? const; blk: block<(arg:auto(TT) const#):void> const)
peek returns auto
argument |
argument type |
---|---|
ch |
jobque::Channel ? const |
blk |
block<(arg:auto(TT) const#):void> const |
从通道读取 Input(按推送顺序)并在每个 Importing 上调用 Block。 之后,不消耗 input
- for_each_clone(channel: Channel? const; blk: block<(res:auto(TT) const#):void> const)
for_each_clone returns auto
argument |
argument type |
---|---|
channel |
jobque::Channel ? const |
blk |
block<(res:auto(TT) const#):void> const |
从通道读取 Input(按推送顺序)并在每个 Importing 上调用 Block。 通道耗尽后停止(内部 Entry 计数器为 0) 这可能会同时发生在多个线程或作业上。
- pop_one(channel: Channel? const; blk: block<(res:auto(TT) const#):void> const)
pop_one returns auto
Warning
This function is deprecated.
argument |
argument type |
---|---|
channel |
jobque::Channel ? const |
blk |
block<(res:auto(TT) const#):void> const |
从 Channel 中读取一个命令
- pop_and_clone_one(channel: Channel? const; blk: block<(res:auto(TT) const#):void> const)
pop_and_clone_one returns auto
argument |
argument type |
---|---|
channel |
jobque::Channel ? const |
blk |
block<(res:auto(TT) const#):void> const |
从 Channel 中读取一个命令
- push_batch_clone(channel: Channel? const; data: array<auto(TT)> const)
push_batch_clone returns auto
argument |
argument type |
---|---|
channel |
jobque::Channel ? const |
data |
array<auto(TT)> const |
克隆数据并将值推送到通道(在末尾)
- push_batch(channel: Channel? const; data: array<auto?> const)
push_batch returns auto
argument |
argument type |
---|---|
channel |
jobque::Channel ? const |
data |
array<auto?> const |
将值推送到通道(在末尾)
- set(box: LockBox? const; data: auto(TT) const)
set returns auto
argument |
argument type |
---|---|
box |
jobque::LockBox ? const |
data |
auto(TT) const |
将值设置为锁箱
- set(box: LockBox? const; data: auto? const)
set returns auto
argument |
argument type |
---|---|
box |
jobque::LockBox ? const |
data |
auto? const |
将值设置为锁箱
- get(box: LockBox? const; blk: block<(res:auto(TT) const#):void> const)
get returns auto
argument |
argument type |
---|---|
box |
jobque::LockBox ? const |
blk |
block<(res:auto(TT) const#):void> const |
从锁箱中读取值并调用其上的块
- update(box: LockBox? const; blk: block<(var res:auto(TT)#):void> const)
update returns auto
argument |
argument type |
---|---|
box |
jobque::LockBox ? const |
blk |
block<(res:auto(TT)#):void> const |
更新锁定框中的值,并调用其上的代码块
- clear(box: LockBox? const; type_: auto(TT) const)
clear returns auto
argument |
argument type |
---|---|
box |
jobque::LockBox ? const |
auto(TT) const |
|
从锁框中清除值
- each_clone(channel: Channel?; tinfo: auto(TT) const)
each_clone returns auto
argument |
argument type |
---|---|
channel |
|
tinfo |
auto(TT) const |
该迭代器用于按照通道推送的顺序对通道进行迭代。一旦通道耗尽(内部入口计数器为 0), ,迭代器就会停止。 迭代可以同时在多个线程或工作上进行。