Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

pcq_get(9) [netbsd man page]

PCQ(9)							   BSD Kernel Developer's Manual						    PCQ(9)

NAME
pcq -- producer/consumer queue SYNOPSIS
#include <sys/pcq.h> pcq_t * pcq_create(size_t maxlen, km_flags_t kmflags); void pcq_destroy(pcq_t *pcq); void * pcq_get(pcq_t *pcq); size_t pcq_maxitems(pcq_t *pcq); void * pcq_peek(pcq_t *pcq); bool pcq_put(pcq_t *pcq, void *item); DESCRIPTION
The machine-independent pcq interface provides lockless producer/consumer queues. A queue (pcq_t) allows multiple writers (producers), but only a single reader (consumer). The consumer is expected to be protected by a lock that covers the structure that the pcq_t is embedded into (e.g., socket lock, ifnet hwlock). These queues operate in a first-in, first-out (FIFO) manner. The act of inserting or removing an item from a pcq_t does not modify the item in any way. pcq does not prevent an item from being inserted multiple times into a single pcq_t. FUNCTIONS
pcq_create(maxlen, kmflags) Create a queue that can store at most maxlen items at one time. kmflags should be either KM_SLEEP, if pcq_create() is allowed to sleep until resources are available, or KM_NOSLEEP if it should return NULL immediately, if resources are unavailable. pcq_destroy(pcq) Free the resources held by pcq. pcq_get(pcq) Remove the next item to be consumed from the queue and return it. If the queue is empty, return NULL. The caller must prevent con- current gets from occuring. pcq_maxitems(pcq) Return the maximum number of items that the queue can store at any one time. pcq_peek(pcq) Return the next item to be consumed from the queue but do not remove it from the queue. If the queue is empty, return NULL. pcq_put(pcq, item) Place an item at the end of the queue. If there is no room in the queue for the item, return false; otherwise, return true. The item must not have the value of NULL. CODE REFERENCES
The pcq interface is implemented within the file sys/kern/subr_pcq.c. SEE ALSO
atomic_ops(3), queue(9) HISTORY
The pcq interface first appeared in NetBSD 6.0. BSD
January 22, 2012 BSD

Check Out this Related Man Page

queue(n)							Tcl Data Structures							  queue(n)

NAME
queue - Create and manipulate queue objects SYNOPSIS
package require Tcl 8.2 package require struct ?1.2.1? queueName option ?arg arg ...? queueName clear queueName destroy queueName get ?count? queueName peek ?count? queueName put item ?item ...? queueName size DESCRIPTION
The ::struct::queue command creates a new queue object with an associated global Tcl command whose name is queueName. This command may be used to invoke various operations on the queue. It has the following general form: queueName option ?arg arg ...? Option and the args determine the exact behavior of the command. The following commands are possible for queue objects: queueName clear Remove all items from the queue. queueName destroy Destroy the queue, including its storage space and associated command. queueName get ?count? Return the front count items of the queue and remove them from the queue. If count is not specified, it defaults to 1. If count is 1, the result is a simple string; otherwise, it is a list. If specified, count must be greater than or equal to 1. If there are no items in the queue, this command will return count empty strings. queueName peek ?count? Return the front count items of the queue, without removing them from the queue. If count is not specified, it defaults to 1. If count is 1, the result is a simple string; otherwise, it is a list. If specified, count must be greater than or equal to 1. If there are no items in the queue, this command will return count empty strings. queueName put item ?item ...? Put the item or items specified into the queue. If more than one item is given, they will be added in the order they are listed. queueName size Return the number of items in the queue. KEYWORDS
stack, matrix, tree, graph struct 1.2.1 queue(n)
Man Page