我有很多函数(length>4000)
行。在这个函数中,我在开头声明了100多个变量。现在,我想在不同的线程中运行一个特定的行块。例如,我想在不同的线程中运行行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
成为一个新的独立函数,则传递的变量太多了。
请告诉我如何继续。
答案 0 :(得分:4)
我要做的是:创建一个包含所有需要变量的结构。然后使用指向该结构的指针创建一个新函数作为参数。然后,您可以使用该函数创建一个新线程,您只需要传递该结构。结构创建也会非常快速地编码,你只需要输入
struct nameforstruct {
//declare vars here, e.g.:
int somevar;
}
围绕它并通过copy-pasting structname->更改对变量的访问权限;在它面前。
功能可能如下所示:
void threadingStuff(struct nametostruct * myvars) {
if (myvars->somevar == 1) {
// do stuff
}
}
在我看来,这是实现你想要的最快方式(以及最简单的工作方式)。但我真的会考虑将其重构为一些更好的方法......