一个并发的队列C++程序

队列是一种先进先出(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值