使用 CLion 在 C 中实现多线程 (Windows)

Multithreading in C with CLion (Windows)

我有一段代码真的很耗时(~2s),没等最后一段就执行完了

for (x = last; x <= end && !found; x++) {
  found = combine(combinaciones, x, end, &current);
}

注意 combine() 这就是我所说的函数。但是在循环再次开始之前(这是因为它在另一个循环中)所有函数必须已经完成。

此外,combine() 接收一些参数,combinaciones 它是一个指针,current 一个整数(通过引用)。随着时间的推移,整数会被修改(并且必须在其他活动函数上进行修改)并且 combinaciones 它是一个链表(其大小为 current-1)。第二个和第三个参数只是整数。 return它是一个终止循环的布尔值,但我不在乎他们是否进行了一些额外的操作。

我强调current的重要性。如果 current 等于 5,将创建 combinaciones 的第 5 个元素,然后 current 将是 6。我的意思是,如果两个函数正在分配内存,它们就不会分配到相同的位置。

如果做不到我可以并行操作,然后在 main().

上分配内存

所以,我开始搜索多线程,我找到了 <pthread.h>,但它只适用于 Linux(不适用于 CLion)。我找到了一个caled fork,不知道能不能用。 你能告诉我一个 Windows 多线程 API,并举例说明 CLion 实现吗?

代码量很大,我认为这不会有太大帮助,我说过应该足够了。但是,如果不清楚,请告诉我。代码本身已在 GitHub 上发布,但它的(少数)评论是西班牙语。

感谢您的帮助!

使用 Wsl(正如@Singh 所说)我可以使用 pthread.h。然后我只是调整了我的代码。我遇到的一个非常烦人的错误是 "IDs"(current 变量)被非连续地分配(第一个线程有“3”,第二个线程有“2”)。我能够通过使用全局变量 (pthread_mutex_t) 和 pthread_mutex_lock()pthread_mutex_unlock() 来修复它。有关更多信息,您仍然可以在 GitHub.

上查看我的代码