pub struct XwmqRx<'a, const N: XwSz, T>where
    [u8; { _ }]: Sized,{ /* private fields */ }Implementations§
source§impl<'a, const N: XwSz, T> XwmqRx<'a, N, T>where
    [u8; { _ }]: Sized,
 
impl<'a, const N: XwSz, T> XwmqRx<'a, N, T>where
    [u8; { _ }]: Sized,
sourcepub fn dq(&self) -> Result<Box<T>, XwmqError>
 
pub fn dq(&self) -> Result<Box<T>, XwmqError>
等待从消息队列 首端 接收一条消息
- 从消息队列的 首端 取出消息,称为 离队 。
- 当消息队列中没有消息时,接收线程会阻塞等待。
- 当消息队列中有可用的消息时,接收线程被唤醒,并取走一个消息,释放消息槽。 若有发送线程正在等待消息槽,将唤醒发送线程。
- 消息 离队 时,会通过 Box::from_raw()将数据重新放入Box中,然后通过Ok()返回。
- 当线程阻塞等待被中断时,通过 Err()返回XwmqError::Interrupt。
§上下文
- 线程
§错误码
- XwmqError::NotInit消息队列没有初始化
- XwmqError::Interrupt等待被中断
- XwmqError::NotThreadContext不在线程上下文内
- XwmqError::DisPmpt抢占被关闭
- XwmqError::DisBh中断底半部被关闭
- XwmqError::DisIrq中断被关闭
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    let rc = rx.dq();
        match rc {
            Ok(d) => { // d是Box<String>
            },
            Err(e) => { // e是错误码
            },
        };
    // ...省略...
}sourcepub fn dq_to(&self, to: XwTm) -> Result<Box<T>, XwmqError>
 
pub fn dq_to(&self, to: XwTm) -> Result<Box<T>, XwmqError>
限时等待从消息队列 首端 接收一条消息
- 从消息队列的 首端 取出消息,称为 离队 。
- 当消息队列中没有消息时,接收线程会阻塞等待,等待时会指定一个唤醒时间点。
- 当消息队列中有可用的消息时,接收线程被唤醒,并取走一个消息,释放消息槽。 若有发送线程正在等待消息槽,将唤醒发送线程。
- 消息 离队 时,会通过 Box::from_raw()将数据重新放入Box中,然后通过Ok()返回。
- 当线程阻塞等待被中断时,通过 Err()返回XwmqError::Interrupt。
- 当到达指定的唤醒时间点,线程被唤醒,并通过 Err()返回XwmqError::Timedout。
§参数说明
- to: 期望唤醒的时间点
§上下文
- 线程
§错误码
- XwmqError::NotInit消息队列没有初始化
- XwmqError::Interrupt等待被中断
- XwmqError::Timedout等待超时
- XwmqError::NotThreadContext不在线程上下文内
- XwmqError::DisPmpt抢占被关闭
- XwmqError::DisBh中断底半部被关闭
- XwmqError::DisIrq中断被关闭
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwtm;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    let rc = rx.dq_to(xwtm::ft(xwtm::s(1)));
        match rc {
            Ok(d) => { // d是Box<String>
            },
            Err(e) => { // e是错误码
            },
        };
    // ...省略...
}sourcepub fn dq_unintr(&self) -> Result<Box<T>, XwmqError>
 
pub fn dq_unintr(&self) -> Result<Box<T>, XwmqError>
等待从消息队列 首端 接收一条消息,且等待不可被中断
- 从消息队列的 首端 取出消息,称为 离队 。
- 当消息队列中没有消息时,接收线程会阻塞等待。
- 接收线程的阻塞等待不可被中断。
- 当消息队列中有可用的消息时,接收线程被唤醒,并取走一个消息,释放消息槽。 若有发送线程正在等待消息槽,将唤醒发送线程。
- 消息 离队 时,会通过 Box::from_raw()将数据重新放入Box中,然后通过Ok()返回。
§上下文
- 线程
§错误码
- XwmqError::NotInit消息队列没有初始化
- XwmqError::NotThreadContext不在线程上下文内
- XwmqError::DisPmpt抢占被关闭
- XwmqError::DisBh中断底半部被关闭
- XwmqError::DisIrq中断被关闭
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    let rc = rx.dq();
        match rc {
            Ok(d) => { // d是Box<String>
            },
            Err(e) => { // e是错误码
            },
        };
    // ...省略...
}sourcepub fn trydq(&self) -> Result<Box<T>, XwmqError>
 
pub fn trydq(&self) -> Result<Box<T>, XwmqError>
尝试从消息队列 首端 接收一条消息
- 从消息队列的 首端 取出消息,称为 离队 。
- 当消息队列中没有消息时,立即通过 Err()返回XwmqError::NoMsg。
- 当消息队列中有可用的消息时,会取走一个消息,并释放消息槽。 若有发送线程正在等待消息槽,将唤醒发送线程。
- 消息 离队 时,会通过 Box::from_raw()将数据重新放入Box中,然后通过Ok()返回。
§上下文
- 任意
§错误码
- XwmqError::NotInit消息队列没有初始化
- XwmqError::NoMsg消息队列中没有消息
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    let rc = rx.trydq();
        match rc {
            Ok(d) => { // d是Box<String>
            },
            Err(e) => { // e是错误码
            },
        };
    // ...省略...
}sourcepub fn rq(&self) -> Result<Box<T>, XwmqError>
 
pub fn rq(&self) -> Result<Box<T>, XwmqError>
等待从消息队列 尾端 接收一条消息
- 从消息队列的 尾端 取出消息,称为 反向离队 。
- 当消息队列中没有消息时,接收线程会阻塞等待。
- 当消息队列中有可用的消息时,接收线程被唤醒,并取走一个消息,释放消息槽。 若有发送线程正在等待消息槽,将唤醒发送线程。
- 消息 离队 时,会通过 Box::from_raw()将数据重新放入Box中,然后通过Ok()返回。
- 当线程阻塞等待被中断时,通过 Err()返回XwmqError::Interrupt。
§上下文
- 线程
§错误码
- XwmqError::NotInit消息队列没有初始化
- XwmqError::Interrupt等待被中断
- XwmqError::NotThreadContext不在线程上下文内
- XwmqError::DisPmpt抢占被关闭
- XwmqError::DisBh中断底半部被关闭
- XwmqError::DisIrq中断被关闭
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    let rc = rx.rq();
        match rc {
            Ok(d) => { // d是Box<String>
            },
            Err(e) => { // e是错误码
            },
        };
    // ...省略...
}sourcepub fn rq_to(&self, to: XwTm) -> Result<Box<T>, XwmqError>
 
pub fn rq_to(&self, to: XwTm) -> Result<Box<T>, XwmqError>
限时等待从消息队列 尾端 接收一条消息
- 从消息队列的 尾端 取出消息,称为 反向离队 。
- 当消息队列中没有消息时,接收线程会阻塞等待,等待时会指定一个唤醒时间点。
- 当消息队列中有可用的消息时,接收线程被唤醒,并取走一个消息,释放消息槽。 若有发送线程正在等待消息槽,将唤醒发送线程。
- 消息 离队 时,会通过 Box::from_raw()将数据重新放入Box中,然后通过Ok()返回。
- 当线程阻塞等待被中断时,通过 Err()返回XwmqError::Interrupt。
- 当到达指定的唤醒时间点,线程被唤醒,并通过 Err()返回XwmqError::Timedout。
§参数说明
- to: 期望唤醒的时间点
§上下文
- 线程
§错误码
- XwmqError::NotInit消息队列没有初始化
- XwmqError::Interrupt等待被中断
- XwmqError::Timedout等待超时
- XwmqError::NotThreadContext不在线程上下文内
- XwmqError::DisPmpt抢占被关闭
- XwmqError::DisBh中断底半部被关闭
- XwmqError::DisIrq中断被关闭
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwtm;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    let rc = rx.rq_to(xwtm::ft(xwtm::s(1)));
        match rc {
            Ok(d) => { // d是Box<String>
            },
            Err(e) => { // e是错误码
            },
        };
    // ...省略...
}sourcepub fn rq_unintr(&self) -> Result<Box<T>, XwmqError>
 
pub fn rq_unintr(&self) -> Result<Box<T>, XwmqError>
等待从消息队列 尾端 接收一条消息,且等待不可被中断
- 从消息队列的 尾端 取出消息,称为 反向离队 。
- 当消息队列中没有消息时,接收线程会阻塞等待。
- 接收线程的阻塞等待不可被中断。
- 当消息队列中有可用的消息时,接收线程被唤醒,并取走一个消息,释放消息槽。 若有发送线程正在等待消息槽,将唤醒发送线程。
- 消息 离队 时,会通过 Box::from_raw()将数据重新放入Box中,然后通过Ok()返回。
§上下文
- 线程
§错误码
- XwmqError::NotInit消息队列没有初始化
- XwmqError::NotThreadContext不在线程上下文内
- XwmqError::DisPmpt抢占被关闭
- XwmqError::DisBh中断底半部被关闭
- XwmqError::DisIrq中断被关闭
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    let rc = rx.rq();
        match rc {
            Ok(d) => { // d是Box<String>
            },
            Err(e) => { // e是错误码
            },
        };
    // ...省略...
}sourcepub fn tryrq(&self) -> Result<Box<T>, XwmqError>
 
pub fn tryrq(&self) -> Result<Box<T>, XwmqError>
尝试从消息队列 尾端 接收一条消息
- 从消息队列的 尾端 取出消息,称为 反向离队 。
- 当消息队列中没有消息时,立即通过 Err()返回XwmqError::NoMsg。
- 当消息队列中有可用的消息时,会取走一个消息,并释放消息槽。 若有发送线程正在等待消息槽,将唤醒发送线程。
- 消息 离队 时,会通过 Box::from_raw()将数据重新放入Box中,然后通过Ok()返回。
§上下文
- 任意
§错误码
- XwmqError::NotInit消息队列没有初始化
- XwmqError::NoMsg消息队列中没有消息
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;
use xwrust::xwmd::xwmq::*;
static MQ: Xwmq<16, String> = Xwmq::new();
pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    let rc = rx.tryrq();
        match rc {
            Ok(d) => { // d是Box<String>
            },
            Err(e) => { // e是错误码
            },
        };
    // ...省略...
}