gpt4 book ai didi

c - 多线程平均每次操作成本

转载 作者:行者123 更新时间:2023-11-30 18:37:45 24 4
gpt4 key购买 nike

我正在学习用 c 语言编写多线程程序,我刚刚注意到,当我增加给定线程的迭代次数时,每次操作的成本会下降。

例如,如果我有 2 个线程,每个线程向全局变量添加一个数字,然后减去相同的数字,如果每个线程执行此操作 1000 次,那么每次操作的成本比每个线程执行此操作的成本要高得多这100万次。这是为什么?

static int num_iterations = 1;
int opt_yield=0;

void add(long long *pointer, long long value) {
long long sum = *pointer + value;
if (opt_yield)
pthread_yield();
*pointer = sum;
}


struct arg_struct {
long long counter;
long long value;
};



void *aux_add(void *arguments)
{

struct arg_struct *args = arguments;
int i=0;
for (i=0;i<num_iterations;i++)
{
args->value = 1;
add(&args->counter,args->value);
args->value = -1;
add(&args->counter,args->value);
}
}


int main(int argc, char * argv[])
{
printf("\n\n");
int num_threads = 2;

pthread_t t[num_threads];


struct arg_struct args;
args.counter = 0;



int count=0;
for(count=0;count<num_threads;count++)
{
if( pthread_create(&threads[count],NULL,&aux_add, (void *) &args) !=0)
exit();
}



for(count=0;count<num_threads;count++)
{
pthread_join(threads[count], NULL);
}


return 0;
}

最佳答案

仅仅因为线程的创建销毁不是免费的 - 它需要操作系统的开销。线程实际工作消耗的时间越多,总运行时间的开销(恒定)就越少。

关于c - 多线程平均每次操作成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35914303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com