在C语言中,要实现多个线程并发执行并找到最大值,你可以使用POSIX线程库(pthread)和互斥锁(mutex)。下面是一个简单的示例:
#include#include #include #include #define NUM_THREADS 10 int max_value = https://www.yisu.com/ask/INT_MIN;"hljs">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 = https://www.yisu.com/ask/local_max;"Max value: %d\n", max_value); return 0; }
这个示例中,我们创建了10个线程,每个线程都会计算一个局部最大值。然后,我们使用互斥锁保护全局变量max_value
,以确保在更新最大值时不会发生竞争条件。最后,主线程等待所有子线程结束后,输出最大值。