使用 CLion 在 C 中实现多线程 (Windows)
Multithreading in C with CLion (Windows)
我有一段代码真的很耗时(~2s),没等最后一段就执行完了
for (x = last; x <= end && !found; x++) {
found = combine(combinaciones, x, end, ¤t);
}
注意 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.
上查看我的代码
我有一段代码真的很耗时(~2s),没等最后一段就执行完了
for (x = last; x <= end && !found; x++) {
found = combine(combinaciones, x, end, ¤t);
}
注意 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.