【发布时间】:2020-07-06 00:05:51
【问题描述】:
我有一段代码非常耗时(~2s),并且可以在最后一个没有完成的情况下执行。
for (x = last; x <= end && !found; x++) {
found = combine(combinaciones, x, end, ¤t);
}
注意combine() 是我所说的函数。但是在循环再次开始之前(因为它在另一个循环中),所有函数都必须完成。
另外,combine() 接收一些参数,combinaciones 是一个指针,current 是一个整数(通过引用)。整数随着时间的推移而被修改(并且必须在其他活动函数上进行修改)并且combinaciones 它是一个链表(其大小为current-1)。第二个和第三个参数只是整数。返回它是一个终止循环的布尔值,但我不关心他们是否进行了一些额外的操作。
我强调current 的重要性。如果 current 等于 5,则将创建 combinaciones 的第 5 个元素,然后 current 将是 6。我的意思是,如果两个函数正在分配内存,它们不会分配到相同的位置。
如果做不到,我可以并行执行这些操作,然后在main() 上分配内存。
所以,我开始搜索多线程并找到了<pthread.h>,但它只适用于 Linux(不适用于 CLion)。我找到了一些caled fork,我也不知道是否可以使用。 能否告诉我一个 Windows 多线程 API 以及示例和 CLion 实现?
代码很大,我认为这不会有太大帮助,我已经说过应该足够了。但是,如果有不清楚的地方,请告诉我。代码本身发布在GitHub,但它拥有的(少数)cmets 是西班牙语。
感谢您的帮助!
【问题讨论】:
-
你应该只使用 Wsl 并使用 wsl 工具链,更多请看这里:jetbrains.com/help/clion/…
-
@Singh 好的,现在
pthread.h可以工作,但我仍然没有代码。我会尝试自己做,如果我成功了,我会更新帖子。 -
这可能对你有帮助:stackoverflow.com/a/11624560/9386720
-
关于:
typedef unsigned char *Encrypted;在typedef语句中隐藏指针是一种非常糟糕的编程习惯 -
关于:
typedef struct {大多数调试器使用结构tag名称来访问结构中的各个字段。因此,强烈建议给结构一个tag名称
标签: c windows multithreading parallel-processing clion