首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类C++中的多线程非静态

类C++中的多线程非静态
EN

Stack Overflow用户
提问于 2016-05-30 16:19:35
回答 1查看 208关注 0票数 2

我正在为Windows开发一个应用程序,其中需要运行三个processes:_thread_EEG (获取)、_thread_MachineLearning (处理)、_thread_Interface (接口)。第二个进程使用第一个进程的数据,第三个进程要求第二个进程的结果。

代码语言:javascript
复制
class uMotor{
private:
    long _endTime;

    bool _busyBuffer;
    bool _busyLabel;

    Raw  _Shared_buffer;
    char _Shared_label ;

    uEEG _gtec;
    Interface _screen;

    void _EEG            (long endTime);
    void _MachineLearning(long endTime);
    void _Interface      (long endTime);

    DWORD __stdcall _Thread_EEG(LPVOID arg){
        uMotor *yc_ptr = (uMotor*)arg;
        yc_ptr->_EEG(_endTime);
        return 1;
    }

    DWORD __stdcall _Thread_MachineLearning(LPVOID arg){
        uMotor *yc_ptr = (uMotor*)arg;
        yc_ptr->_MachineLearning(_endTime);
        return 1;
    }

    DWORD __stdcall _Thread_Interface(LPVOID arg){
        uMotor *yc_ptr = (uMotor*)arg;
        yc_ptr->_Interface(_endTime);
        return 1;
    }

public:
    uMotor();
    void BCI();
    ~uMotor();
};

线程在函数uMotor::BCI()中调用。

代码语言:javascript
复制
void uMotor::BCI(){
    const long NUM_SECONDS_RUNNING = 9;

    long startTime = clock();
    long endTime = startTime + NUM_SECONDS_RUNNING * CLOCKS_PER_SEC;

    HANDLE Handle_Thread_EEG             = 0;
    HANDLE Handle_Thread_MachineLearning = 0;
    HANDLE Handle_Thread_Interface       = 0;

    Handle_Thread_EEG = CreateThread(NULL, 0, _Thread_EEG, &endTime, 0, NULL);
    Handle_Thread_EEG = CreateThread(NULL, 0, _Thread_MachineLearning, &endTime, 0, NULL);
    Handle_Thread_EEG = CreateThread(NULL, 0, _Thread_Interface, &endTime, 0, NULL);
}

在函数CreateThread中,Visual 2015显示了一个错误argument of type "DWORD(_stdcall uMotor::*)(LPVOID arg)" is incompatible with parameter of type "LPTHREAD_START_ROUTINE"

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-30 16:25:50

线程函数必须是静态的,所以在static之前添加DWORD __stdcall.

另外,CreateThread的第四个参数是例程参数。您期待的是指向uMotor的指针,而不是传递&endTime。将&endTime替换为this

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

https://stackoverflow.com/questions/37530047

复制
相关文章

相似问题

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