小编mar*_*_17的帖子

提高多线程程序的速度

我有一个简单的问题:我需要创建三个线程并在每个线程中执行某个操作.第一个线程需要添加100array[0]和减去101array[1],第二线程需要添加200array[1]并减去201array[2]而最终第三线程需要添加300array[2]并减去301array[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)

c multithreading

1
推荐指数
1
解决办法
95
查看次数

回文图灵机

用一根胶带和两根胶带描述TM,它们决定回文的语言适应性(单词只有“ 1”和“ 0”符号)。估计每个TM的工作时间。

turing-machines

-3
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

multithreading ×1

turing-machines ×1