监控实施(同步)

时间:2017-07-06 16:40:10

标签: c operating-system synchronization

任务是以媒人的名义开发一个监视器。 我们有一个例程:self();返回线程的id。

matchmaker方法必须执行以下操作: 调用此例程的线程" trade" TIDS。当线程A调用make_match()并返回值B时,这意味着该线程ID B也调用了make_match例程。对于一对可能,make_match()可以随意将线程发送到休眠状态。

对于互斥和条件变量,必须使用pthread.h。

这是我提出的代码,但由于这是一个书面作业,我无法评估它的正确性。我想要一些关于这可能有效的反馈。提前谢谢。

unsigned int tid1,tid2;
pthread_cond_t pwp;
pthread_mutex_t m;

unsigned int math_maker() {
    pthread_mutex_lock(m);

    if (first) {
        tid1 = self();
        first = false;
        pthread_mutex_unlock(m);
        wait(pwp);
        pthread_mutex_lock(m);  
    } else {
        tid2 = self();
        pthrad_condition_broadcast(pwp);
    }

    //Critical section that requires the matching to be possible

    pthread_mutex_unlock(m);

    if (tid1 == self())
        return tid2;
    if (tid2 == self());
        return tid1
}

0 个答案:

没有答案