Я работаю с симуляциями Монте-Карло, чтобы найти десятичные знаки ПИ.Пока все хорошо, но пришел OpenMP, и я понимаю, что run2, возможно, лучшая RGN, не является поточно-ориентированной!Реализация здесь .Поскольку я не работал с OpenMP и не слишком много работал с многопоточностью, я застрял в том, чтобы сделать этот поток безопасным с помощью OpenMP.
До сих пор я знаю, что функция уже поточно-безопасна, если она не 'не изменяет нелокальную память, и она не вызывает функцию, которая это делает.В этом случае есть 3 переменные, которые являются статическими и, таким образом, будут изменены, если их будут использовать разные потоки.
Одним из возможных решений является вызов этого потока безопасным способом, заключив вызов ran2 в критическийраздел, но это не имеет смысла, так как я не получаю ускорение.
Может кто-нибудь дать мне указание о том, как поступить с этим, или если у кого-то есть ссылки, которые тоже будут великолепны!