Я довольно новичок в QuantLib и еще не знаю все входы и выходы источника, но я пытался проверить простой многопоточный расчет NPV с несколькими вариантами и получить ошибки времени выполнения. Вот мой тестовый код, который просто расширен из примера EquityOpiton, включенного в QL.QuantLib Многопоточность/Concurrecy
// options
VanillaOption europeanOption(payoff, europeanExercise);
VanillaOption bermudanOption(payoff, bermudanExercise);
VanillaOption americanOption(payoff, americanExercise);
boost::thread_group worker_threads;
for(int x = 0; x < 3; ++x)
{
switch (x)
{
case 0:
europeanOption.setPricingEngine(boost::shared_ptr(
new FDEuropeanEngine(bsmProcess,
100,99)));
worker_threads.create_thread(boost::bind(&VanillaOption::NPV, &europeanOption));
case 1:
bermudanOption.setPricingEngine(boost::shared_ptr(
new FDBermudanEngine(bsmProcess,
100,99)));
worker_threads.create_thread(boost::bind(&VanillaOption::NPV, &bermudanOption));
case 2:
americanOption.setPricingEngine(boost::shared_ptr(
new FDAmericanEngine(bsmProcess,
100,99)));
worker_threads.create_thread(boost::bind(&VanillaOption::NPV, &americanOption));
default:
break;
}
}
worker_threads.join_all();
Что именно вызывает эти ошибки во время выполнения и как я могу это исправить? Я предполагаю, что это имеет какое-то отношение к общим указателям, но они довольно сильно используются во всех QL, которые я заметил, и я не уверен, какие из них вызывают проблему.
derp. Вы поняли, что это трюк ... Большое спасибо за чтение и ответ. – user2183336
@ user218336 Добро пожаловать. Вы можете найти ответы, которые вы найдете полезными, щелкнув вверх-треугольник слева от них. (Это доступно в дополнение к контрольной маркировке ответа, наиболее полезного для вас.) –