栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Linux与FIFO等待队列的同步

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux与FIFO等待队列的同步

这是创建基于pthreads原语的简单排队“票证锁”的方法。它应该给您一些想法:

#include <pthread.h>typedef struct ticket_lock {    pthread_cond_t cond;    pthread_mutex_t mutex;    unsigned long queue_head, queue_tail;} ticket_lock_t;#define TICKET_LOCK_INITIALIZER { PTHREAD_COND_INITIALIZER, PTHREAD_MUTEX_INITIALIZER }void ticket_lock(ticket_lock_t *ticket){    unsigned long queue_me;    pthread_mutex_lock(&ticket->mutex);    queue_me = ticket->queue_tail++;    while (queue_me != ticket->queue_head)    {        pthread_cond_wait(&ticket->cond, &ticket->mutex);    }    pthread_mutex_unlock(&ticket->mutex);}void ticket_unlock(ticket_lock_t *ticket){    pthread_mutex_lock(&ticket->mutex);    ticket->queue_head++;    pthread_cond_broadcast(&ticket->cond);    pthread_mutex_unlock(&ticket->mutex);}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412490.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号