首页 > 解决方案 > 如何在c中为pthreads给出执行顺序?

问题描述

共有三个 pthread。

我想添加一个设置线程顺序的线程。

在我的源代码中,我得到随机结果。

前任)

1 2 2 1 1 3 3 3

但我想要,1 1 1 2 2 2 3 3 3

如何使用附加的 pthread 来做到这一点?

感谢阅读。

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

void *runner1(void *argument) {
    for (int i = 0; i < 3; i++) {
        printf("1 ");
    }
    return NULL;
}

void *runner2(void *argument) {
    for (int i = 0; i < 3; i++) {
        printf("2 ");
    }
    return NULL;
}

void *runner3(void *argument) {
    for (int i = 0; i < 3; i++) {
        printf("3 ");
    }
    return NULL;
}

int main() {
    pthread_t t1;
    pthread_t t2;
    pthread_t t3;

    pthread_create(&t1, NULL, runner1, NULL);
    pthread_create(&t2, NULL, runner2, NULL);
    pthread_create(&t3, NULL, runner3, NULL);

    pthread_join(t1, NULL);
    pthread_join(t2, NULL);
    pthread_join(t3, NULL);

    return 0;
}

标签: cmultithreadingpthreads

解决方案


推荐阅读