Я пытаюсь несколько простых boost::thread
кода следующим образом:Повысьте :: нить вылету при простом цикле
#include <iostream>
#include <boost/thread.hpp>
void InputLoop()
{
std::cout << "Loop start" << std::endl;
int y = 0;
while (1)
{
std::cout << "y = " << y << std::endl;
y++;
}
std::cout << "Loop end" << std::endl;
}
int main()
{
std::cout << "Main start" << std::endl;
boost::thread t(InputLoop);
t.start_thread();
while (1)
{
int x = 0;
}
std::cout << "Main end" << std::endl;
return 0;
}
Это дает выход:
Main start
Loop start
y = 0
y = 1
y = 2
.
.
.
The program has unexpectedly finished
Таким образом, происходит сбой во время InputLoop()
. Значение y
при возникновении сбоя варьируется между различными пробегами и колеблется от примерно 0 до примерно 10000.
Что происходит?
Он работает на http://coliru.stacked-crooked.com/. Хотя, без t.start_thread(); и с "warning: unused variable 'x' [-Wunused-variable] int x = 0;" – SChepurin
Либо мне нужно обновить, либо понизить уровень моего повышения. Потому что 'start_thread' утверждает, что« личное »разрешение доступа на моей платформе (OSX 10.7.1) – WhozCraig
@WhozCraig - Извините, отредактированный, забыл упомянуть -« /usr/local/include/boost/thread/detail/thread.hpp:177 : 14: error: 'void boost :: thread :: start_thread()' private void start_thread() ". Просто хотел указать, что он не «неожиданно неожиданно». – SChepurin