У меня есть вопрос относительно этого кода, который я хочу работать на QNX:QNX C++ нить вопрос
class ConcreteThread : public Thread
{
public:
ConcreteThread(int test)
{
testNumber = test;
}
void *start_routine()
{
for(int i = 0; i < 10; i++)
{
sleep(1);
cout << testNumber << endl;
}
}
private:
int testNumber;
};
class Thread
{
public:
Thread(){};
int Create()
{
pthread_t m_id;
return pthread_create(&m_id, NULL, &(this->start_routine_trampoline), this);
}
protected:
virtual void *start_routine() = 0;
private:
static void *start_routine_trampoline(void *p)
{
Thread *pThis = (Thread *)p;
return pThis->start_routine();
}
};
Теперь, когда я запускаю этот код без сна в * start_routine, он будет просто печатать номер 10 раз, прежде чем перейти к следующей строке кода (последовательно, а не параллельно). Однако, когда я использую сон, как в коде, он вообще не печатает никаких чисел и просто переходит к следующей строке кода. Почему не работает со сном и как я могу сделать поток, подобный этой работе, вместо того, чтобы работать последовательно?
+1 за правильный ответ. Но я НЕ так уверен в * «избегая использования статических методов в качестве функции pthread» *. См. Http://stackoverflow.com/questions/433220/qnx-c-thread-question#433614 –
См. Комментарии в своем ответе. Он указывает на статью по адресу http://www.parashift.com/c++-faq-lite/pointers-to-members.html#faq-33.2, что в секундах мое мнение. –