在c语言中max函数的并发执行如何实现

   2024-09-29 4810
核心提示:在C语言中,要实现多个线程并发执行并找到最大值,你可以使用POSIX线程库(pthread)和互斥锁(mutex)。下面是一个简单的示例:

在C语言中,要实现多个线程并发执行并找到最大值,你可以使用POSIX线程库(pthread)和互斥锁(mutex)。下面是一个简单的示例:

#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <limits.h>#define NUM_THREADS 10int max_value = INT_MIN;pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;void *find_max(void *arg) {    int thread_id = *(int *)arg;    int local_max = INT_MIN;    // 模拟计算每个线程的最大值    for (int i = 0; i < 1000; i++) {        if (local_max < i) {            local_max = i;        }    }    // 使用互斥锁保护全局变量max_value    pthread_mutex_lock(&mutex);    if (local_max > max_value) {        max_value = local_max;    }    pthread_mutex_unlock(&mutex);    return NULL;}int main() {    pthread_t threads[NUM_THREADS];    int thread_ids[NUM_THREADS];    // 创建线程    for (int i = 0; i < NUM_THREADS; i++) {        thread_ids[i] = i;        pthread_create(&threads[i], NULL, find_max, &thread_ids[i]);    }    // 等待线程结束    for (int i = 0; i < NUM_THREADS; i++) {        pthread_join(threads[i], NULL);    }    printf("Max value: %d\n", max_value);    return 0;}

这个示例中,我们创建了10个线程,每个线程都会计算一个局部最大值。然后,我们使用互斥锁保护全局变量max_value,以确保在更新最大值时不会发生竞争条件。最后,主线程等待所有子线程结束后,输出最大值。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号