xrtTypedSPSCQueueInit
初始化、创建、结束或销毁一个有界单生产者单消费者类型队列。
| 参数 | 说明 |
|---|---|
| xtypedspscqueue* pQueue | 队列对象 |
| const xrttype* pItemType | ItemTye 参数 |
| size_t iCapacity | 容量 |
示例已编译验证
typedspscqueueinit obj; xrtTypedSPSCQueueInit(&obj, pQueue, pItemType, iCapacity);
xrtTypedSPSCQueueCreate
XRT_API xtypedspscqueue* xrtTypedSPSCQueueCreate( const xrttype* pItemType, size_t iCapacity );
示例已编译验证
/* XRT_API xtypedspscqueue* xrtTypedSPSCQueueCreate( const xrttype* pItemType, size_t iCapacity ); */ xhandle* h = xrtTypedSPSCQueueCreate();
xrtTypedSPSCQueueUnit
XRT_API void xrtTypedSPSCQueueUnit(xtypedspscqueue* pQueue);
示例已编译验证
xrtTypedSPSCQueueUnit(obj);
xrtTypedSPSCQueueDestroy
XRT_API void xrtTypedSPSCQueueDestroy(xtypedspscqueue* pQueue);
示例已编译验证
xrtTypedSPSCQueueDestroy(obj);
xrtTypedSPSCQueueItemType
返回借用元素类型、实际 2 次幂容量和并发近似元素数。
| 参数 | 说明 |
|---|---|
| const xtypedspscqueue* pQueue | 队列对象 |
示例已编译验证
/* 返回借用元素类型、实际 2 次幂容量和并发近似元素数。 */ result = xrtTypedSPSCQueueItemType(pQueue);
xrtTypedSPSCQueueCapacity
XRT_API size_t xrtTypedSPSCQueueCapacity(const xtypedspscqueue* pQueue);
示例已编译验证
/* XRT_API size_t xrtTypedSPSCQueueCapacity(const xtypedspscqueue* pQueue); */ result = xrtTypedSPSCQueueCapacity();
xrtTypedSPSCQueueCount
XRT_API size_t xrtTypedSPSCQueueCount(const xtypedspscqueue* pQueue);
示例已编译验证
/* XRT_API size_t xrtTypedSPSCQueueCount(const xtypedspscqueue* pQueue); */ result = xrtTypedSPSCQueueCount();
xrtTypedSPSCQueueTryPush
复制或移动压入一个值;满、关闭和错误使用 xqueueresult 区分。
| 参数 | 说明 |
|---|---|
| xtypedspscqueue* pQueue | 队列对象 |
| const void* pItem | 元素 |
示例已编译验证
/* 复制或移动压入一个值;满、关闭和错误使用 xqueueresult 区分。 */ result = xrtTypedSPSCQueueTryPush(pQueue, pItem);
xrtTypedSPSCQueueTryPushTake
XRT_API xqueueresult xrtTypedSPSCQueueTryPushTake( xtypedspscqueue* pQueue, ptr pItem );
示例已编译验证
/* XRT_API xqueueresult xrtTypedSPSCQueueTryPushTake( xtypedspscqueue* pQueue, ptr pItem ); */ result = xrtTypedSPSCQueueTryPushTake();
xrtTypedSPSCQueueTryPop
移动弹出到已初始化输出;类型移动失败时元素仍由队列拥有。
| 参数 | 说明 |
|---|---|
| xtypedspscqueue* pQueue | 队列对象 |
| ptr pValue | 值 |
示例已编译验证
/* 移动弹出到已初始化输出;类型移动失败时元素仍由队列拥有。 */ result = xrtTypedSPSCQueueTryPop(pQueue, pValue);
xrtTypedSPSCQueuePushBatch
批量处理连续类型值;部分成功返回 OK 和实际处理数量。
| 参数 | 说明 |
|---|---|
| xtypedspscqueue* pQueue | 队列对象 |
| const void* pItems | 元素数组 |
| size_t iCount | 数量 |
示例已编译验证
/* 批量处理连续类型值;部分成功返回 OK 和实际处理数量。 */ result = xrtTypedSPSCQueuePushBatch(pQueue, pItems, iCount);
xrtTypedSPSCQueuePopBatch
XRT_API xqueuebatchresult xrtTypedSPSCQueuePopBatch( xtypedspscqueue* pQueue, ptr pValues, size_t iCapacity );
示例已编译验证
/* XRT_API xqueuebatchresult xrtTypedSPSCQueuePopBatch( xtypedspscqueue* pQueue, ptr pValues, size_t iCapacity ); */ result = xrtTypedSPSCQueuePopBatch();
xrtTypedSPSCQueueClose
关闭写端、查询终态,或在独占且排空后重新开放。
| 参数 | 说明 |
|---|---|
| xtypedspscqueue* pQueue | 队列对象 |
示例已编译验证
/* 关闭写端、查询终态,或在独占且排空后重新开放。 */ result = xrtTypedSPSCQueueClose(pQueue);
xrtTypedSPSCQueueIsClosed
XRT_API bool xrtTypedSPSCQueueIsClosed(const xtypedspscqueue* pQueue);
示例已编译验证
/* XRT_API bool xrtTypedSPSCQueueIsClosed(const xtypedspscqueue* pQueue); */ result = xrtTypedSPSCQueueIsClosed();
xrtTypedSPSCQueueIsDrained
XRT_API bool xrtTypedSPSCQueueIsDrained(const xtypedspscqueue* pQueue);
示例已编译验证
/* XRT_API bool xrtTypedSPSCQueueIsDrained(const xtypedspscqueue* pQueue); */ result = xrtTypedSPSCQueueIsDrained();
xrtTypedSPSCQueueReset
XRT_API bool xrtTypedSPSCQueueReset(xtypedspscqueue* pQueue);
示例已编译验证
/* XRT_API bool xrtTypedSPSCQueueReset(xtypedspscqueue* pQueue); */ result = xrtTypedSPSCQueueReset();
xrtTypedSPSCQueueTypeValidate
验证对象队列描述,并返回 SPSC 队列实例操作表。
| 参数 | 说明 |
|---|---|
| const xrttype* pType | 类型 |
示例已编译验证
/* 验证对象队列描述,并返回 SPSC 队列实例操作表。 */ result = xrtTypedSPSCQueueTypeValidate(pType);
xrtTypedSPSCQueueInstanceOps
XRT_API const xrtinstanceops* xrtTypedSPSCQueueInstanceOps(void);
示例已编译验证
/* XRT_API const xrtinstanceops* xrtTypedSPSCQueueInstanceOps(void); */ result = xrtTypedSPSCQueueInstanceOps();
xrtTypedMPSCQueueInit
初始化、创建、结束或销毁一个有界多生产者单消费者类型队列。
| 参数 | 说明 |
|---|---|
| xtypedmpscqueue* pQueue | 队列对象 |
| const xrttype* pItemType | ItemTye 参数 |
| size_t iCapacity | 容量 |
示例已编译验证
typedmpscqueueinit obj; xrtTypedMPSCQueueInit(&obj, pQueue, pItemType, iCapacity);
xrtTypedMPSCQueueCreate
XRT_API xtypedmpscqueue* xrtTypedMPSCQueueCreate( const xrttype* pItemType, size_t iCapacity );
示例已编译验证
/* XRT_API xtypedmpscqueue* xrtTypedMPSCQueueCreate( const xrttype* pItemType, size_t iCapacity ); */ xhandle* h = xrtTypedMPSCQueueCreate();
xrtTypedMPSCQueueUnit
XRT_API void xrtTypedMPSCQueueUnit(xtypedmpscqueue* pQueue);
示例已编译验证
xrtTypedMPSCQueueUnit(obj);
xrtTypedMPSCQueueDestroy
XRT_API void xrtTypedMPSCQueueDestroy(xtypedmpscqueue* pQueue);
示例已编译验证
xrtTypedMPSCQueueDestroy(obj);
xrtTypedMPSCQueueItemType
返回借用元素类型、实际 2 次幂容量和并发近似元素数。
| 参数 | 说明 |
|---|---|
| const xtypedmpscqueue* pQueue | 队列对象 |
示例已编译验证
/* 返回借用元素类型、实际 2 次幂容量和并发近似元素数。 */ result = xrtTypedMPSCQueueItemType(pQueue);
xrtTypedMPSCQueueCapacity
XRT_API size_t xrtTypedMPSCQueueCapacity(const xtypedmpscqueue* pQueue);
示例已编译验证
/* XRT_API size_t xrtTypedMPSCQueueCapacity(const xtypedmpscqueue* pQueue); */ result = xrtTypedMPSCQueueCapacity();
xrtTypedMPSCQueueCount
XRT_API size_t xrtTypedMPSCQueueCount(const xtypedmpscqueue* pQueue);
示例已编译验证
/* XRT_API size_t xrtTypedMPSCQueueCount(const xtypedmpscqueue* pQueue); */ result = xrtTypedMPSCQueueCount();
xrtTypedMPSCQueueTryPush
复制或移动压入一个值;满、关闭和错误使用 xqueueresult 区分。
| 参数 | 说明 |
|---|---|
| xtypedmpscqueue* pQueue | 队列对象 |
| const void* pItem | 元素 |
示例已编译验证
/* 复制或移动压入一个值;满、关闭和错误使用 xqueueresult 区分。 */ result = xrtTypedMPSCQueueTryPush(pQueue, pItem);
xrtTypedMPSCQueueTryPushTake
XRT_API xqueueresult xrtTypedMPSCQueueTryPushTake( xtypedmpscqueue* pQueue, ptr pItem );
示例已编译验证
/* XRT_API xqueueresult xrtTypedMPSCQueueTryPushTake( xtypedmpscqueue* pQueue, ptr pItem ); */ result = xrtTypedMPSCQueueTryPushTake();
xrtTypedMPSCQueueTryPop
由唯一消费者移动弹出;类型移动失败时元素仍由队列拥有。
| 参数 | 说明 |
|---|---|
| xtypedmpscqueue* pQueue | 队列对象 |
| ptr pValue | 值 |
示例已编译验证
/* 由唯一消费者移动弹出;类型移动失败时元素仍由队列拥有。 */ result = xrtTypedMPSCQueueTryPop(pQueue, pValue);
xrtTypedMPSCQueuePushBatch
批量处理连续类型值;部分成功返回 OK 和实际处理数量。
| 参数 | 说明 |
|---|---|
| xtypedmpscqueue* pQueue | 队列对象 |
| const void* pItems | 元素数组 |
| size_t iCount | 数量 |
示例已编译验证
/* 批量处理连续类型值;部分成功返回 OK 和实际处理数量。 */ result = xrtTypedMPSCQueuePushBatch(pQueue, pItems, iCount);
xrtTypedMPSCQueuePopBatch
XRT_API xqueuebatchresult xrtTypedMPSCQueuePopBatch( xtypedmpscqueue* pQueue, ptr pValues, size_t iCapacity );
示例已编译验证
/* XRT_API xqueuebatchresult xrtTypedMPSCQueuePopBatch( xtypedmpscqueue* pQueue, ptr pValues, size_t iCapacity ); */ result = xrtTypedMPSCQueuePopBatch();
xrtTypedMPSCQueueClose
关闭写端、查询终态,或在独占且排空后重新开放。
| 参数 | 说明 |
|---|---|
| xtypedmpscqueue* pQueue | 队列对象 |
示例已编译验证
/* 关闭写端、查询终态,或在独占且排空后重新开放。 */ result = xrtTypedMPSCQueueClose(pQueue);
xrtTypedMPSCQueueIsClosed
XRT_API bool xrtTypedMPSCQueueIsClosed(const xtypedmpscqueue* pQueue);
示例已编译验证
/* XRT_API bool xrtTypedMPSCQueueIsClosed(const xtypedmpscqueue* pQueue); */ result = xrtTypedMPSCQueueIsClosed();
xrtTypedMPSCQueueIsDrained
XRT_API bool xrtTypedMPSCQueueIsDrained(const xtypedmpscqueue* pQueue);
示例已编译验证
/* XRT_API bool xrtTypedMPSCQueueIsDrained(const xtypedmpscqueue* pQueue); */ result = xrtTypedMPSCQueueIsDrained();
xrtTypedMPSCQueueReset
XRT_API bool xrtTypedMPSCQueueReset(xtypedmpscqueue* pQueue);
示例已编译验证
/* XRT_API bool xrtTypedMPSCQueueReset(xtypedmpscqueue* pQueue); */ result = xrtTypedMPSCQueueReset();
xrtTypedMPSCQueueTypeValidate
验证对象队列描述,并返回 MPSC 队列实例操作表。
| 参数 | 说明 |
|---|---|
| const xrttype* pType | 类型 |
示例已编译验证
/* 验证对象队列描述,并返回 MPSC 队列实例操作表。 */ result = xrtTypedMPSCQueueTypeValidate(pType);
xrtTypedMPSCQueueInstanceOps
XRT_API const xrtinstanceops* xrtTypedMPSCQueueInstanceOps(void);
示例已编译验证
/* XRT_API const xrtinstanceops* xrtTypedMPSCQueueInstanceOps(void); */ result = xrtTypedMPSCQueueInstanceOps();
xrtTypedMPMCQueueInit
初始化、创建、结束或销毁一个有界多生产者多消费者类型队列。
| 参数 | 说明 |
|---|---|
| xtypedmpmcqueue* pQueue | 队列对象 |
| const xrttype* pItemType | ItemTye 参数 |
| size_t iCapacity | 容量 |
示例已编译验证
typedmpmcqueueinit obj; xrtTypedMPMCQueueInit(&obj, pQueue, pItemType, iCapacity);
xrtTypedMPMCQueueCreate
XRT_API xtypedmpmcqueue* xrtTypedMPMCQueueCreate( const xrttype* pItemType, size_t iCapacity );
示例已编译验证
/* XRT_API xtypedmpmcqueue* xrtTypedMPMCQueueCreate( const xrttype* pItemType, size_t iCapacity ); */ xhandle* h = xrtTypedMPMCQueueCreate();
xrtTypedMPMCQueueUnit
XRT_API void xrtTypedMPMCQueueUnit(xtypedmpmcqueue* pQueue);
示例已编译验证
xrtTypedMPMCQueueUnit(obj);
xrtTypedMPMCQueueDestroy
XRT_API void xrtTypedMPMCQueueDestroy(xtypedmpmcqueue* pQueue);
示例已编译验证
xrtTypedMPMCQueueDestroy(obj);
xrtTypedMPMCQueueItemType
返回借用元素类型、实际 2 次幂容量和并发近似元素数。
| 参数 | 说明 |
|---|---|
| const xtypedmpmcqueue* pQueue | 队列对象 |
示例已编译验证
/* 返回借用元素类型、实际 2 次幂容量和并发近似元素数。 */ result = xrtTypedMPMCQueueItemType(pQueue);
xrtTypedMPMCQueueCapacity
XRT_API size_t xrtTypedMPMCQueueCapacity(const xtypedmpmcqueue* pQueue);
示例已编译验证
/* XRT_API size_t xrtTypedMPMCQueueCapacity(const xtypedmpmcqueue* pQueue); */ result = xrtTypedMPMCQueueCapacity();
xrtTypedMPMCQueueCount
XRT_API size_t xrtTypedMPMCQueueCount(const xtypedmpmcqueue* pQueue);
示例已编译验证
/* XRT_API size_t xrtTypedMPMCQueueCount(const xtypedmpmcqueue* pQueue); */ result = xrtTypedMPMCQueueCount();
xrtTypedMPMCQueueTryPush
复制或移动压入一个值;满、关闭和错误使用 xqueueresult 区分。
| 参数 | 说明 |
|---|---|
| xtypedmpmcqueue* pQueue | 队列对象 |
| const void* pItem | 元素 |
示例已编译验证
/* 复制或移动压入一个值;满、关闭和错误使用 xqueueresult 区分。 */ result = xrtTypedMPMCQueueTryPush(pQueue, pItem);
xrtTypedMPMCQueueTryPushTake
XRT_API xqueueresult xrtTypedMPMCQueueTryPushTake( xtypedmpmcqueue* pQueue, ptr pItem );
示例已编译验证
/* XRT_API xqueueresult xrtTypedMPMCQueueTryPushTake( xtypedmpmcqueue* pQueue, ptr pItem ); */ result = xrtTypedMPMCQueueTryPushTake();
xrtTypedMPMCQueueTryPop
由任意消费者移动弹出;类型移动失败时元素进入内部重试环。
| 参数 | 说明 |
|---|---|
| xtypedmpmcqueue* pQueue | 队列对象 |
| ptr pValue | 值 |
示例已编译验证
/* 由任意消费者移动弹出;类型移动失败时元素进入内部重试环。 */ result = xrtTypedMPMCQueueTryPop(pQueue, pValue);
xrtTypedMPMCQueuePushBatch
批量处理连续类型值;部分成功返回 OK 和实际处理数量。
| 参数 | 说明 |
|---|---|
| xtypedmpmcqueue* pQueue | 队列对象 |
| const void* pItems | 元素数组 |
| size_t iCount | 数量 |
示例已编译验证
/* 批量处理连续类型值;部分成功返回 OK 和实际处理数量。 */ result = xrtTypedMPMCQueuePushBatch(pQueue, pItems, iCount);
xrtTypedMPMCQueuePopBatch
XRT_API xqueuebatchresult xrtTypedMPMCQueuePopBatch( xtypedmpmcqueue* pQueue, ptr pValues, size_t iCapacity );
示例已编译验证
/* XRT_API xqueuebatchresult xrtTypedMPMCQueuePopBatch( xtypedmpmcqueue* pQueue, ptr pValues, size_t iCapacity ); */ result = xrtTypedMPMCQueuePopBatch();
xrtTypedMPMCQueueClose
关闭写端、查询终态,或在独占且排空后重新开放。
| 参数 | 说明 |
|---|---|
| xtypedmpmcqueue* pQueue | 队列对象 |
示例已编译验证
/* 关闭写端、查询终态,或在独占且排空后重新开放。 */ result = xrtTypedMPMCQueueClose(pQueue);
xrtTypedMPMCQueueIsClosed
XRT_API bool xrtTypedMPMCQueueIsClosed(const xtypedmpmcqueue* pQueue);
示例已编译验证
/* XRT_API bool xrtTypedMPMCQueueIsClosed(const xtypedmpmcqueue* pQueue); */ result = xrtTypedMPMCQueueIsClosed();
xrtTypedMPMCQueueIsDrained
XRT_API bool xrtTypedMPMCQueueIsDrained(const xtypedmpmcqueue* pQueue);
示例已编译验证
/* XRT_API bool xrtTypedMPMCQueueIsDrained(const xtypedmpmcqueue* pQueue); */ result = xrtTypedMPMCQueueIsDrained();
xrtTypedMPMCQueueReset
XRT_API bool xrtTypedMPMCQueueReset(xtypedmpmcqueue* pQueue);
示例已编译验证
/* XRT_API bool xrtTypedMPMCQueueReset(xtypedmpmcqueue* pQueue); */ result = xrtTypedMPMCQueueReset();
xrtTypedMPMCQueueTypeValidate
验证对象队列描述,并返回 MPMC 队列实例操作表。
| 参数 | 说明 |
|---|---|
| const xrttype* pType | 类型 |
示例已编译验证
/* 验证对象队列描述,并返回 MPMC 队列实例操作表。 */ result = xrtTypedMPMCQueueTypeValidate(pType);
xrtTypedMPMCQueueInstanceOps
XRT_API const xrtinstanceops* xrtTypedMPMCQueueInstanceOps(void);
示例已编译验证
/* XRT_API const xrtinstanceops* xrtTypedMPMCQueueInstanceOps(void); */ result = xrtTypedMPMCQueueInstanceOps();