本文整理汇总了C++中queue函数的典型用法代码示例。如果您正苦于以下问题:C++ queue函数的具体用法?C++ queue怎么用?C++ queue使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了queue函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: window
window_t* window(
window_type_t type,
uint8_t max_size)
{
debug_print("window()\n");
window_t* new_window = (window_t*) calloc(1, sizeof(window_t));
new_window->buffer = queue();
new_window->type = type;
new_window->max_size = max_size;
new_window->autocommit = true;
pthread_mutex_init(&new_window->lock, 0);
sem_init(&new_window->available, 0, 0);
if (type == WINDOW_TYPE_SNW) {
new_window->max_size = 1;
}
success_print("window() succeed\n");
return new_window;
}
示例2: queue
/** Find a path with sufficient unused residual capacity.
* @return true if a path was found from source to sink.
*/
bool mflo_ffs::findPath() {
vertex u,v; edge e;
List queue(g->n());
while (scale > 0) {
for (u = 1; u <= g->n(); u++) pEdge[u] = 0;
queue.addLast(g->src());
while (!queue.empty()) {
u = queue.first(); queue.removeFirst();
for (e = g->firstAt(u); e != 0; e=g->nextAt(u,e)) {
v = g->mate(u,e);
if (g->res(u,e) >= scale && pEdge[v] == 0
&& v != g->src()) {
pEdge[v] = e;
if (v == g->snk()) return true;
queue.addLast(v);
}
}
}
scale /= 2;
}
return false;
}
示例3: main
// this example demonstrates how to use the mapped_view class to map
// an array of numbers to device memory and use the reduce() algorithm
// to calculate the sum.
int main()
{
// get default device and setup context
compute::device gpu = compute::system::default_device();
compute::context context(gpu);
compute::command_queue queue(context, gpu);
std::cout << "device: " << gpu.name() << std::endl;
// create data on host
int data[] = { 4, 2, 3, 7, 8, 9, 1, 6 };
// create mapped view on device
compute::mapped_view<int> view(data, 8, context);
// use reduce() to calculate sum on the device
int sum = 0;
compute::reduce(view.begin(), view.end(), &sum, queue);
// print the sum on the host
std::cout << "sum: " << sum << std::endl;
return 0;
}
示例4: GetResourceManager
std::unique_ptr<RenderQueue> BREW::CreateLabelDrawable( std::shared_ptr<const Label> label ) const {
const auto& font_name = GetProperty<std::string>( "FontName", label );
const auto& font = GetResourceManager().GetFont( font_name );
auto font_size = GetProperty<unsigned int>( "FontSize", label );
auto font_color = GetProperty<sf::Color>( "Color", label );
std::unique_ptr<RenderQueue> queue( new RenderQueue );
sf::Text vis_label( label->GetWrappedText(), *font, font_size );
vis_label.setColor( font_color );
if( !label->GetLineWrap() ) {
// Calculate alignment when word wrap is disabled.
sf::Vector2f avail_space( label->GetAllocation().width - label->GetRequisition().x, label->GetAllocation().height - label->GetRequisition().y );
sf::Vector2f position( avail_space.x * label->GetAlignment().x, avail_space.y * label->GetAlignment().y );
vis_label.setPosition( position.x, position.y );
}
queue->Add( Renderer::Get().CreateText( vis_label ) );
return queue;
}
示例5: dijkstra
void dijkstra(int source) {
fill_range(dist, dist + graph.vertex_num, INF); // \SourceRef{source:utility}
fill_range(prev, prev + graph.vertex_num, -1);
fill_range<Edge *>(path, path + graph.vertex_num, NULL);
dist[source] = 0;
std::set<int, bool(*)(int ,int)> queue(dijkstra_compare); // use binary heap
for (int vi = 0; vi < graph.vertex_num; ++vi) {
queue.insert(vi);
}
for (; !queue.empty(); ) {
int u = *queue.begin();
queue.erase(u);
for (SPEdge * edge = graph.head[u]; edge != NULL; edge = edge->next) {
if (queue.count(edge->v) > 0 && dist[edge->u] + edge->w < dist[edge->v]) {
queue.erase(edge->v);
dist[edge->v] = dist[edge->u] + edge->w;
prev[edge->v] = edge->u;
path[edge->v] = edge;
queue.insert(edge->v);
}
}
}
}
示例6: main
int main(int argc, char *argv[])
{
perf_parse_args(argc, argv);
std::cout << "size: " << PERF_N << std::endl;
compute::device device = compute::system::default_device();
compute::context context(device);
compute::command_queue queue(context, device);
compute::vector<compute::uint_> vector(PERF_N, context);
compute::default_random_engine rng(queue);
compute::uniform_int_distribution<compute::uint_> dist(0, 1);
perf_timer t;
t.start();
dist.generate(vector.begin(), vector.end(), rng, queue);
queue.finish();
t.stop();
std::cout << "time: " << t.min_time() / 1e6 << " ms" << std::endl;
return 0;
}
示例7: YKNewTask
void YKNewTask(void (*task)(void), void*taskStack, unsigned char priority) { /* Creates a new task */
int ip,sp;
TCBptr new_task = &YKTCBArray[activeTasks];
activeTasks++;
new_task->priority = priority;
new_task->state = READY;
new_task->delay = 0;
new_task->next = NULL;
new_task->prev = NULL;
YKRdyList = queue(YKRdyList,new_task);
ip = (int) task & 0xFFFF;
sp = (int) taskStack & 0xFFFF;
sp = initStack(ip,sp);
new_task->sp = (void*)sp;
if(runningTask != NULL){
YKScheduler(0);
}
}
示例8: YKEventSet
void YKEventSet(YKEVENT* e, unsigned mask){
TCBptr head;
TCBptr temp;
int schedule;
YKEnterMutex();
e->flags |= mask; /* Set bits from mask to one (leave others unchanged) */
head = e->tasks;
e->sFlags = e->flags; /* Save flags that caused this pend */
/* unblock all tasks associated with this event*/
schedule = 0;
while( head != NULL){
temp = head;
head = head->next;
e->tasks = head;
temp->next = NULL;
YKRdyList = queue(YKRdyList,temp);
schedule = 1;
}
YKExitMutex();
if(schedule)
YKScheduler(0);
}
示例9: host
bool KRlprPrinterImpl::setupCommand(TQString& cmd, KPrinter *printer)
{
// retrieve the KMPrinter object, to get host and queue name
KMPrinter *rpr = KMFactory::self()->manager()->findPrinter(printer->printerName());
if (!rpr)
return false;
QString host(rpr->option("host")), queue(rpr->option("queue"));
if (!host.isEmpty() && !queue.isEmpty())
{
QString exestr = TDEStandardDirs::findExe("rlpr");
if (exestr.isEmpty())
{
printer->setErrorMessage(i18n("The <b>%1</b> executable could not be found in your path. Check your installation.").arg("rlpr"));
return false;
}
cmd = TQString::fromLatin1("%1 -H %2 -P %3 -\\#%4").arg(exestr).arg(quote(host)).arg(quote(queue)).arg(printer->numCopies());
// proxy settings
TDEConfig *conf = KMFactory::self()->printConfig();
conf->setGroup("RLPR");
QString host = conf->readEntry("ProxyHost",TQString::null), port = conf->readEntry("ProxyPort",TQString::null);
if (!host.isEmpty())
{
cmd.append(" -X ").append(quote(host));
if (!port.isEmpty()) cmd.append(" --port=").append(port);
}
return true;
}
else
{
printer->setErrorMessage(i18n("The printer is incompletely defined. Try to reinstall it."));
return false;
}
}
示例10: main
int main() {
auto& converter = SKKRomanKanaConverter::theInstance();
converter.Initialize("kana-rule.conf");
TestInputQueueObserver observer;
SKKInputQueue queue(&observer);
queue.AddChar('a');
assert(observer.Test("あ", ""));
observer.Clear();
queue.AddChar('k');
assert(observer.Test("", "k"));
queue.AddChar('y');
assert(observer.Test("", "ky"));
queue.RemoveChar();
assert(observer.Test("", "k"));
queue.AddChar('i');
assert(observer.Test("き", ""));
observer.Clear();
queue.AddChar('n');
assert(observer.Test("", "n"));
queue.Terminate();
assert(observer.Test("ん", ""));
queue.AddChar('n');
assert(queue.CanConvert('i'));
queue.Terminate();
observer.Clear();
queue.AddChar('o');
queue.AddChar('w');
queue.AddChar('s');
queue.AddChar('a');
assert(observer.Test("おさ", ""));
}
示例11: queue
/** Compute exact distance labels and return in distance vector.
* For vertices that can't reach sink, compute labels to source.
*/
void mflo_pp::initdist() {
vertex u,v; edge e;
List queue(g->n());
for (u = 1; u < g->n(); u++) d[u] = 2*g->n();
// compute distance labels for vertices that have path to sink
d[g->snk()] = 0;
queue.addLast(g->snk());
while (!queue.empty()) {
u = queue.first(); queue.removeFirst();
for (e = g->firstAt(u); e != 0; e = g->nextAt(u,e)) {
v = g->mate(u,e);
if (g->res(v,e) > 0 && d[v] > d[u] + 1) {
d[v] = d[u] + 1;
queue.addLast(v);
}
}
}
if (d[g->src()] < g->n())
Util::fatal("initdist: path present from source to sink");
// compute distance labels for remaining vertices
d[g->src()] = g->n();
queue.addLast(g->src());
while (!queue.empty()) {
u = queue.first(); queue.removeFirst();
for (e = g->firstAt(u); e != 0; e = g->nextAt(u,e)) {
v = g->mate(u,e);
if (g->res(v,e) > 0 && d[v] > d[u] + 1) {
d[v] = d[u] + 1;
queue.addLast(v);
}
}
}
}
示例12: intel_wait_engine_idle
void
intel_wait_engine_idle(void)
{
TRACE(("intel_wait_engine_idle()\n"));
{
QueueCommands queue(gInfo->shared_info->primary_ring_buffer);
queue.PutFlush();
}
// TODO: this should only be a temporary solution!
// a better way to do this would be to acquire the engine's lock and
// sync to the latest token
bigtime_t start = system_time();
ring_buffer &ring = gInfo->shared_info->primary_ring_buffer;
uint32 head, tail;
while (true) {
head = read32(ring.register_base + RING_BUFFER_HEAD)
& INTEL_RING_BUFFER_HEAD_MASK;
tail = read32(ring.register_base + RING_BUFFER_TAIL)
& INTEL_RING_BUFFER_HEAD_MASK;
if (head == tail)
break;
if (system_time() > start + 1000000LL) {
// the engine seems to be locked up!
TRACE(("intel_extreme: engine locked up, head %lx!\n", head));
break;
}
spin(10);
}
}
示例13: main
// this example demonstrates how to print the values in a vector
int main()
{
// get default device and setup context
compute::device gpu = compute::system::default_device();
compute::context context(gpu);
compute::command_queue queue(context, gpu);
std::cout << "device: " << gpu.name() << std::endl;
// create vector on the device and fill with the sequence 1..10
compute::vector<int> vector(10, context);
compute::iota(vector.begin(), vector.end(), 1, queue);
//[print_vector_example
std::cout << "vector: [ ";
boost::compute::copy(
vector.begin(), vector.end(),
std::ostream_iterator<int>(std::cout, ", "),
queue
);
std::cout << "]" << std::endl;
//]
return 0;
}
示例14: main
int main(int argc, char *argv[])
{
perf_parse_args(argc, argv);
std::cout << "size: " << PERF_N << std::endl;
// setup context and queue for the default device
boost::compute::device device = boost::compute::system::default_device();
boost::compute::context context(device);
boost::compute::command_queue queue(context, device);
std::cout << "device: " << device.name() << std::endl;
// create vector of random numbers on the host
std::vector<int> host_vector(PERF_N);
std::generate(host_vector.begin(), host_vector.end(), rand_int);
perf_timer t;
for(size_t trial = 0; trial < PERF_TRIALS; trial++){
boost::compute::vector<int> device_vector(
host_vector.begin(), host_vector.end(), queue
);
t.start();
device_vector.erase(
boost::compute::remove(
device_vector.begin(), device_vector.end(), 4, queue
),
device_vector.end(),
queue
);
queue.finish();
t.stop();
}
std::cout << "time: " << t.min_time() / 1e6 << " ms" << std::endl;
return 0;
}
示例15: queue
std::deque<Address> GPU::find(std::vector<FindArgs> &requests) const
{
cl::CommandQueue queue(context,dev);
// std::clog<<"Queue and kernel constructed"<<std::endl;
std::deque<Address> result;
cl_ulong2 *output=new cl_ulong2[requests.size()];
cl::Buffer bufOutput(context, CL_MEM_WRITE_ONLY, requests.size()*sizeof(cl_ulong2));
// std::clog<<"Output buffer ready"<<std::endl;
cl::Buffer bufArgs(context, requests.data(), requests.data()+requests.size(), true, true);
// std::clog<<"Args buffer ready"<<std::endl;
cl::make_kernel<cl::Buffer&,cl::Buffer&,cl::Buffer&> find(kfind);
find(cl::EnqueueArgs(queue, cl::NDRange(requests.size())), *bufData, bufArgs, bufOutput);
queue.finish();
// std::clog<<"Kernels executed"<<std::endl;
cl::copy(queue, bufOutput, output, output+requests.size());
queue.finish();
for(size_t i=0;i<requests.size();++i)
{
if(output[i].s[0]!=-1)
result.push_back(Address(output[i].s[0],output[i].s[1]));
}
delete []output;
return result;
}