队列是一种先进先出(FIFO)的数据结构。在并发编程中,队列可用于在多个线程之间传递信息或任务。
下面是一个简单的 C 语言队列程序的例子:
``` #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <stdbool.h>
#define QUEUE_SIZE 10
// 队列数据结构 typedef struct { int items[QUEUE_SIZE]; // 存储元素的数组 int front; // 队列头 int rear; // 队列尾 int count; // 队列中元素的个数 pthread_mutex_t lock; // 互斥锁 } queue;
// 初始化队列 void queue_init(queue *q) { q->front = 0; q->rear = -1; q->count = 0; pthread_mutex_init(&q->lock, NULL); }
// 向队列中添加元素 void queue_add(queue *q, int item) { // 使用互斥锁保证线程安全 pthread_mutex_lock(&q->lock);
// 如果队列已满,则扩大数组 if (q->count == QUEUE_SIZE) { int new_size = QUEUE_SIZE * 2; q->items = realloc(q->items, new_size * sizeof(int)); QUEUE_SIZE = new_size; }
// 将元素添加到队列尾部 q->rear = (q->rear + 1) % QUEUE_SIZE; q->items[q->rear] = item; q->count++;
pthread_mutex_unlock(&q->lock); }
// 从队列中删除元素 int queue_remove(queue *q) { // 使用互斥锁保证线程安全 pthread_mutex_lock(&q->lock);
// 如果队列为空,则返回 -1 if (q->count == 0) { p