我有一个关于我想在 QNX 上运行的代码的问题:
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 次,然后继续执行下一行代码(顺序而不是并行)。但是,当我在代码中使用 sleep 时,它根本不会打印任何数字,而是继续执行下一行代码。为什么睡眠不起作用,我怎样才能使这样的线程工作,而不是按顺序运行?