#pragma once#include <utility>#include "tbb/concurrent_queue.h"#include "wrappers.h"template<typename T>struct TbbQueueWrapper{public:typedef DummyToken producer_token_t;typedef DummyToken consumer_token_t;public:template<typename U>inline bool enqueue(U&& item){q.push(std::forward<U>(item));return true; // assume successful allocation for the sake of the benchmarks}inline bool try_dequeue(T& item){return q.try_pop(item);}// Dummy token methods (not used)bool enqueue(producer_token_t const&, T const&) { return false; }bool try_enqueue(producer_token_t, T const&) { return false; }bool try_dequeue(consumer_token_t, T& item) { return false; }template<typename It> bool enqueue_bulk(It, size_t) { return false; }template<typename It> bool enqueue_bulk(producer_token_t const&, It, size_t) { return false; }template<typename It> size_t try_dequeue_bulk(It, size_t) { return 0; }template<typename It> size_t try_dequeue_bulk(consumer_token_t, It, size_t) { return 0; }private:tbb::concurrent_queue<T> q;};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。