pub struct XwmqTx<'a, const N: XwSz, T>where
[u8; { _ }]: Sized,{ /* private fields */ }
Implementations§
source§impl<'a, const N: XwSz, T> XwmqTx<'a, N, T>where
[u8; { _ }]: Sized,
impl<'a, const N: XwSz, T> XwmqTx<'a, N, T>where
[u8; { _ }]: Sized,
sourcepub fn eq(&self, data: T) -> XwmqError
pub fn eq(&self, data: T) -> XwmqError
等待消息槽,成功后将消息发送到消息队列的 尾端 (入队)
- 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待。
- 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过
Box
将数据放入heap中,然后进行发送。 - 当发送线程阻塞等待被中断时,返回
XwmqError::Interrupt
。
§参数说明
- data: 类型为
T
的数据
§上下文
- 线程
§错误码
XwmqError::Ok
没有错误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();
// ...省略...
tx.eq("message".to_string());
// ...省略...
}
sourcepub fn eq_to(&self, data: T, to: XwTm) -> XwmqError
pub fn eq_to(&self, data: T, to: XwTm) -> XwmqError
限时等待消息槽,成功后将消息发送到消息队列的 尾端 (入队)
- 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待,等待时会指定一个唤醒时间点。
- 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过
Box
将数据放入heap中,然后进行发送。 - 当发送线程阻塞等待被中断时,返回
XwmqError::Interrupt
。 - 当到达指定的唤醒时间点,线程被唤醒,并返回
XwmqError::Timedout
。
§参数说明
- data: 类型为
T
的数据 - to: 期望唤醒的时间点
§上下文
- 线程
§错误码
XwmqError::Ok
没有错误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();
// ...省略...
tx.eq_to("message".to_string(), xwtm::ft(xwtm::s(1)));
// ...省略...
}
sourcepub fn eq_unintr(&self, data: T) -> XwmqError
pub fn eq_unintr(&self, data: T) -> XwmqError
等待消息槽,且等待不可被中断,成功后将消息发送到消息队列的 尾端 (入队)
- 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待。
- 发送线程的阻塞等待不可被中断。
- 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过
Box
将数据放入heap中,然后进行发送。
§参数说明
- data: 类型为
T
的数据
§上下文
- 线程
§错误码
XwmqError::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();
// ...省略...
tx.eq_unintr("message".to_string());
// ...省略...
}
sourcepub fn tryeq(&self, data: T) -> XwmqError
pub fn tryeq(&self, data: T) -> XwmqError
尝试获取消息槽,成功后将消息发送到消息队列的 尾端 (入队)
- 当消息队列中没有可用的消息槽可用时,立即返回
XwmqError::NoSlot
。 - 当消息队列中有可用的消息槽时,取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过
Box
将数据放入heap中,然后进行发送。
§参数说明
- data: 类型为
T
的数据
§上下文
- 任意
§错误码
XwmqError::Ok
没有错误XwmqError::NotInit
消息队列没有初始化XwmqError::NoSlot
消息队列中没有可用的消息槽
§示例
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();
// ...省略...
tx.tryeq("message".to_string());
// ...省略...
}
sourcepub fn jq(&self, data: T) -> XwmqError
pub fn jq(&self, data: T) -> XwmqError
等待消息槽,成功后将消息发送到消息队列的 首端 (插队)
- 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待。
- 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过
Box
将数据放入heap中,然后进行发送。 - 当发送线程阻塞等待被中断时,返回
XwmqError::Interrupt
。
§参数说明
- data: 类型为
T
的数据
§上下文
- 线程
§错误码
XwmqError::Ok
没有错误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();
// ...省略...
tx.jq("message".to_string());
// ...省略...
}
sourcepub fn jq_to(&self, data: T, to: XwTm) -> XwmqError
pub fn jq_to(&self, data: T, to: XwTm) -> XwmqError
限时等待消息槽,成功后将消息发送到消息队列的 首端 (插队)
- 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待,等待时会指定一个唤醒时间点。
- 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过
Box
将数据放入heap中,然后进行发送。 - 当发送线程阻塞等待被中断时,返回
XwmqError::Interrupt
。 - 当到达指定的唤醒时间点,线程被唤醒,并返回
XwmqError::Timedout
。
§参数说明
- data: 类型为
T
的数据 - to: 期望唤醒的时间点
§上下文
- 线程
§错误码
XwmqError::Ok
没有错误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();
// ...省略...
tx.jq_to("message".to_string(), xwtm::ft(xwtm::s(1)));
// ...省略...
}
sourcepub fn jq_unintr(&self, data: T) -> XwmqError
pub fn jq_unintr(&self, data: T) -> XwmqError
等待消息槽,且等待不可被中断,成功后将消息发送到消息队列的 首端 (插队)
- 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待。
- 发送线程的阻塞等待不可被中断。
- 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过
Box
将数据放入heap中,然后进行发送。
§参数说明
- data: 类型为
T
的数据
§上下文
- 线程
§错误码
XwmqError::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();
// ...省略...
tx.jq_unintr("message".to_string());
// ...省略...
}
sourcepub fn tryjq(&self, data: T) -> XwmqError
pub fn tryjq(&self, data: T) -> XwmqError
尝试获取消息槽,成功后将消息发送到消息队列的 首端 (插队)
- 当消息队列中没有可用的消息槽可用时,立即返回
XwmqError::NoSlot
。 - 当消息队列中有可用的消息槽时,取走一个消息槽,用于发送数据。
- 消息 入队 时,会通过
Box
将数据放入heap中,然后进行发送。
§参数说明
- data: 类型为
T
的数据
§上下文
- 任意
§错误码
XwmqError::Ok
没有错误XwmqError::NotInit
消息队列没有初始化XwmqError::NoSlot
消息队列中没有可用的消息槽
§示例
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();
// ...省略...
tx.tryjq("message".to_string());
// ...省略...
}
Trait Implementations§
impl<'a, const N: XwSz, T> Send for XwmqTx<'a, N, T>where
[u8; { _ }]: Sized,
impl<'a, const N: XwSz, T> !Sync for XwmqTx<'a, N, T>where
[u8; { _ }]: Sized,
Auto Trait Implementations§
impl<'a, const N: usize, T> Freeze for XwmqTx<'a, N, T>where
[u8; { _ }]: Sized,
impl<'a, const N: usize, T> !RefUnwindSafe for XwmqTx<'a, N, T>
impl<'a, const N: usize, T> Unpin for XwmqTx<'a, N, T>where
[u8; { _ }]: Sized,
impl<'a, const N: usize, T> !UnwindSafe for XwmqTx<'a, N, T>
Blanket Implementations§
§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)