我有一个简单的问题:我需要创建三个线程并在每个线程中执行某个操作.第一个线程需要添加100到array[0]和减去101从array[1],第二线程需要添加200至array[1]并减去201从array[2]而最终第三线程需要添加300至array[2]并减去301从array[0].
以下是正确的解决方案,但运行时间非常长.如果我使用一个线程执行此任务,则运行时间将少于1秒,但是三个线程将运行时间增加到大约10秒(+ - 2秒).问题是什么?我认为有三个线程的解决方案必须更快.可能是我以错误的方式使用互斥?
#include <stdio.h>
#include <pthread.h>
#include <limits.h>
enum {SIZE = 3, ITER = 1000000};
double array[SIZE] = {};
pthread_t threads[SIZE];
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
void *func(void *arg) {
int n = *(int *)arg;
int tmp = 100 * (n + 1),
tmp2 = tmp + 1;
for (int i = 0; i != …Run Code Online (Sandbox Code Playgroud)