Вся документация, которую я до сих пор читал, указывает на то, что в моей версии vxWorks (6.8) есть поддержка потоков posix, однако простое тестовое приложение не работает должным образом. Вот источник:
tTest.h
#include <pthread.h>
class tTest
{
public:
tTest();
virtual ~tTest();
private:
pthread_t tid;
static void* Worker(void* args);
};
tTest.cpp
#include <stdio.h>
#include "tTest.h"
tTest::tTest()
{
printf("Starting up...\n");
if(pthread_create(&tid, NULL, &tTest::Worker, NULL))
{
printf("Failed to create thread.\n");
}
}
tTest::~tTest()
{
if(pthread_join(tid,NULL))
{
printf("Failed to join thread.\n");
}
printf("Shutting down...\n");
}
void* tTest::Worker(void* args)
{
printf("ThreadID: %d\n", (int)pthread_self());
return NULL;
}
Точка входа для модуля ядра vxWorks просто:
#include "tTest.h"
int tTest_main()
{
tTest m;
return 0;
}
Сообщения о запуске / завершении работы хороши, но рабочий поток - нет. Это работает нормально и, как и ожидалось, в Linux. Чего мне не хватает?