gpt4 book ai didi

c - 在 C 的不同线程中运行函数内的一组特定行

转载 作者:行者123 更新时间:2023-12-03 06:01:29 24 4
gpt4 key购买 nike

我有一个巨大的函数(length>4000)行。在这个函数中,我在开头声明了 100 多个变量。现在,我想在不同的线程中运行特定的行 block 。例如,我想在不同的线程中运行 2000-3000 行。我该怎么做?

为了缩小示例,这就是我所拥有的:

int functionA()
{
.....variables declared......
.....variables declared......
printf("hello");
printf("this");
printf("is in another");
printf("thread");
}

我想在另一个线程中运行 4 个 printf 函数。

为此,我目前所做的是:

int functionA()
{
.....variables declared......
.....variables declared......
void functionB()
{
printf("hello");
printf("this");
printf("is in another");
printf("thread");
}
pthread_create(&tid, NULL, functionB, NULL);
pthread_join(tid, NULL);
}

我知道这是一种糟糕的方法。但是,如果我想让 functionB 成为一个新的独立函数,则需要传递太多变量。

请让我知道如何继续。

最佳答案

在你的情况下我会做的是:创建一个包含所有需要的变量的结构。然后创建一个新函数,并将指向该结构的指针作为参数。然后,您可以使用该函数创建一个新线程,并且只需传递该结构即可。此外,结构创建的编码速度非常快,您只需输入

struct nameforstruct {
//declare vars here, e.g.:
int somevar;
}

围绕它并通过在其前面复制粘贴 structname-> 来更改对变量的访问。

函数可能如下所示:

void threadingStuff(struct nametostruct * myvars) {
if (myvars->somevar == 1) {
// do stuff
}
}

在我看来,这将是实现您想要的目标的最快方法(也是工作量最少的方法)。但我真的会考虑将其重构为更好的方法......

关于c - 在 C 的不同线程中运行函数内的一组特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29941008/

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