- 5
- 0
- 约4.39千字
- 约 6页
- 2017-03-14 发布于重庆
- 举报
使用二个互斥量的多线程程序
#include#include
#include
#include
#include
#define HASH id id % NHASH
#define THREAD_NUM 5
#define FOO_NUM 10
#define NHASH 29
struct foo *fh[NHASH];
pthread_mutex_t hashlock PTHREAD_MUTEX_INITIALIZER;
struct foo
int f_count;
pthread_mutex_t f_lock;
struct foo *f_next;
int f_id;
int visited[THREAD_NUM];
int vnum;
;
struct foo* foo_alloc int fid struct foo *fp;
int i, idx;
if fp malloc sizeof struct foo ! NULL
fp- f_count 1;
if pthread_mutex_init fp- f_lock,NULL ! 0
free fp ;
return NULL; idx HASH fid ;
pthread_mutex_lock hashlock ;
fp- f_next fh[idx];
fh[idx] fp;
pthread_mutex_lock fp- f_lock ;
pthread_mutex_unlock hashlock ;
for i 0; i THREAD_NUM; i++ fp- visited[i] -1; pthread_mutex_unlock fp- f_lock ;
return fp; void foo_hold int tid, struct foo *fp pthread_mutex_lock fp- f_lock ;
fp- f_count++;
fp- visited[fp- vnum++] tid;
pthread_mutex_unlock fp- f_lock ; struct foo * foo_find int tid, int foo_id struct foo *fp;
int idx;
idx HASH foo_id ;
pthread_mutex_lock hashlock ;
for fp fh[idx];fp! NULL;fp fp- f_next
if fp- f_id foo_id
foo_hold tid, fp ;
break; pthread_mutex_unlock hashlock ;
return fp; void foo_rele int fid, struct foo *fp struct foo *tfp;
int idx;
pthread_mutex_lock fp- f_lock ;
if fp- f_count 1
pthread_mutex_unlock fp- f_lock ;
pthread_mutex_lock hashlock ;
pthread_mutex_lock fp- f_lock ;
if fp- f_count! 1
fp- f_count--;
pthread_mutex_unlock fp- f_lock ;
pthread_mutex_unlock hashlock ;
return; idx HASH fid ;
tfp fh[idx];
if tfp fp
fh[idx] fp- f_next;
else
while tfp- f_next! fp tfp tfp- f_next;
tfp- f_next fp- f_next; pthread_mutex_unlock hashlock ;
pthread_mutex_unlock fp- f_lock ;
pthread_mutex_destroy fp- f_lock ;
free fp ;
else
fp- f_count--;
pthread_mutex_unlock fp- f_lock ; void* thrd_func_0 void *arg int tid int arg;
int i,j,foo_id;
i j foo_id 0;
struct foo *fp NULL;
for i 0; i THREAD_NUM;i++
for j 0; j FOO_NUM; j++ foo_id j + i * FOO_NUM;
fp foo_find tid, foo_id ;
if NULL
您可能关注的文档
- 使用powershell对IP地址进行DHCP和手工转换.docx
- 使用powershell批量导入导出用户.docx
- 浅析发展和平稳定的两岸关系.doc
- 浅析如何使中小学校园集体舞走的更远.doc
- 浅析建筑工程机电设备的节能.doc
- 浅析数学思想方法与教学的应用.doc
- 浅析视唱练耳练习中的若干问题.doc
- 使用Pushlet来实现服务器端向客户端推送信息.doc
- 浅析陕北地区定向井钻井技术的探讨.doc
- 使用QL2006烧写PIC单片机流程.doc
- 浙江省温州市2024-2025学年七年级上学期语文期末考查卷.docx
- 精品解析:北京市建华实验学校2024-2025学年七年级下学期期中英语试题(原卷版).docx
- 精品解析:北京市通州区2024-2025学年七年级下学期期末考试英语试卷(原卷版).docx
- 精品解析:北京市回民学校2024-2025学年九年级上学期期中语文试题(解析版).docx
- 精品解析:北京市海淀区2025-2026学年九年级上学期期末语文试题(解析版).docx
- 精品解析:北京市东城区汇文中学2025-2026学年八年级上学期期中语文试题(原卷版).docx
- 精品解析:北京市回民学校2024-2025学年九年级上学期期中语文试题(原卷版).docx
- 精品解析:2024-2025学年广东省广州市从化区街口镇中心小学人教版五年级上册期中测试数学试卷(解析版).docx
- 精品解析:北京市通州区2024-2025学年七年级下学期期末考试英语试卷(解析版).docx
- 精品解析:北京市建华实验学校2024-2025学年七年级下学期期中英语试题(解析版).docx
最近下载
- JGJ-T403-2017:建筑基桩自平衡静载试验技术规程.pdf VIP
- 2023-2024学年贵州省贵阳市九年级上学期物理期末试题及答案.pdf VIP
- 地方政府大数据发展的现实与理想 .pdf
- 证券从业之证券市场基本法律法规考试题库(考点梳理).docx
- 2026年高考物理模拟试卷必刷题——匀变速直线运动的研究.docx VIP
- 环境影响评价工程师之环评法律法规题库及参考答案【精练】.docx
- 伟迪捷喷码机培训精编版.ppt VIP
- 2023年国家公务员考试题库含完整答案【夺冠】.docx
- 广东省梅州市丰顺县2024-2025学年六年级(上)期末语文试卷(有答案).pdf VIP
- 2026年高考物理模拟试卷必刷题——力学实验.docx VIP
原创力文档

文档评论(0)