У меня есть фрагмент кода, который действительно занимает много времени (~ 2 с) и может быть выполнен без завершения последнего.
for (x = last; x <= end && !found; x++) {
found = combine(combinaciones, x, end, ¤t);
}
Обратите внимание, что combine()
это функция, которой я был говоря о. Но прежде чем l oop снова запустится (это внутри другого l oop), все функции должны быть завершены.
Также, combine()
получает некоторые аргументы, combinaciones
это указатель, и current
целое число (по ссылке). Целое число изменяется с течением времени (и должно изменяться в других активных функциях), а combinaciones
это связанный список (размер которого current-1
). 2-й и 3-й аргумент - просто целые числа. Возвращаемое значение - логическое значение, которое завершает l oop, но мне не важно, делают ли они какие-то дополнительные операции.
Я подчеркиваю важность current
. Если current
равно 5, 5-й элемент combinaciones
будет создан, а затем current
будет 6. Я имею в виду, что если две функции выделяют память, они не могут выделять одну и ту же позицию.
Если это невозможно, я могу выполнить операции параллельно, а затем выделить память для main()
.
Итак, я начал искать многопоточность и обнаружил <pthread.h>
, но он работал только на Linux (не на CLion). Я нашел что-то, названное вилкой, я тоже не знаю, можно ли его использовать. Не могли бы вы рассказать мне о Windows многопоточном API, с примером и реализацией CLion?
Код огромен, и я не думаю, что это сильно поможет, если я сказал, должно быть достаточно. Однако, если что-то неясно, дайте мне знать. Сам код, опубликованный на GitHub , но (несколько) комментариев, которые он имеет, написаны на испанском sh.
Спасибо за вашу помощь!