文章

61

粉丝

0

获赞

0

访问

3.5k

头像
2015年计算机学科专业基础综合试题 - 第45题回答
操作系统
发布于2025年6月30日 19:35
阅读数 4

// 信号量定义及初值

// 互斥信号量
semaphore mutex_A = 1;     // 控制对A信箱的互斥访问
semaphore mutex_B = 1;     // 控制对B信箱的互斥访问

// 同步信号量 (邮件数量)
semaphore mail_A_count = x; // A信箱中邮件数量 (初始x个)
semaphore mail_B_count = y; // B信箱中邮件数量 (初始y个)

// 同步信号量 (空闲槽位数量)
semaphore free_A_slots = M - x; // A信箱中空闲槽位数量 (初始M-x个)
semaphore free_B_slots = N - y; // B信箱中空闲槽位数量 (初始N-y个)


CoBegin
A { // 辩论者A
    while (true) {
        // --- 1. 从A的信箱中取出一个邮件 ---
        P(mail_A_count);    // 等待A信箱中有邮件,邮件数减1
        P(mutex_A);         // 锁定A信箱,防止其他线程同时操作
        
        // 临界区:从A的信箱中取邮件
        // 从A的信箱中取出一个邮件(实际操作)
        
        V(mutex_A);         // 解锁A信箱
        V(free_A_slots);    // 增加A信箱的空闲槽位,通知等待B信箱的(B的生产者)

        // --- 2. 回答问题并提出一个新问题 (耗时操作,在临界区外执行) ---
        // 回答问题并提出一个新问题;

        // --- 3. 将新邮件放入B的信箱 ---
        P(free_B_slots);    // 等待B信箱有空闲槽位,空闲槽位减1
        P(mutex_B);         // 锁定B信箱,防止其他线程同时操作
        
        // 临界区:向B的信箱放邮件
        // 将新邮件放入B的信箱(实际操作)
     ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发