首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vxWorks pthread

vxWorks pthread
EN

Stack Overflow用户
提问于 2011-10-14 05:50:07
回答 2查看 5.1K关注 0票数 2

到目前为止,我读过的所有文档似乎都表明,在我的vxWorks版本(6.8)中存在POSIX线程支持,但是一个简单的测试应用程序无法按预期执行。以下是源代码:

tTest.h

代码语言:javascript
复制
#include <pthread.h>

class tTest
{
    public:
        tTest();
        virtual ~tTest();
    private:
        pthread_t tid;
        static void* Worker(void* args);
};

tTest.cpp

代码语言:javascript
复制
#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内核模块的入口点很简单:

代码语言:javascript
复制
#include "tTest.h"

int tTest_main()
{
    tTest m;
    return 0;
}

启动/关闭消息是正确的,但工作线程不是。这在linux中工作得很好,不出所料。我遗漏了什么?

EN

回答 2

Stack Overflow用户

发布于 2011-11-14 14:09:52

假设您正在使用WindRiver Workbench开发此应用程序,您将需要使用内核配置并启用POSIX包。

这可以通过在内核配置中搜索“pthread”来完成。

票数 3
EN

Stack Overflow用户

发布于 2011-12-22 01:28:35

POSIX支持在VxWorks 6.8中存在,但是大多数POSIX组件不包括在默认配置中。在工作台中,POSIX支持在内核配置的POSIX组件文件夹下启用。

POSIX支持分为许多不同的模块,例如进程调度、时钟(默认情况下包含)、消息队列等。

如果您是在工作台下进行开发,则包括适当的组件(在本例中为INCLUDE_POSIX_THREADS)也将包括pthread所依赖的任何其他组件。如果您在工作台之外配置内核,则需要确保手动包含所有依赖项。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7760846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档