小编Sha*_*zad的帖子

C++ vector或Queue在内存和速度方面构建大Q.

我正在构建一个庞大的消息队列,并且只使用PUSH和POP,这样可以更高效地(矢量或队列)以最大速度维护大数据

struct MQStruct {
    wchar_t *serviceName; 
    int durability; 
    int msgType; 
    int msgHeader; 
    wchar_t *msgId; 
    wchar_t *payload; 
    int payloadSize; 
    int ttl; 
    int priority;
}MQStructObj;

vector<MQStruct> MQvector;
queue<MQStruct> MSQ;

int SendMessage(wchar_t *serviceName, int durability, int msgType, int msgHeader, wchar_t *msgId, wchar_t *payload, int payloadSize, int ttl, int priority) {

MQStructObj.serviceName=serviceName;
MQStructObj.durability=durability;
MQStructObj.msgType=msgType;
MQStructObj.msgHeader=msgHeader;
MQStructObj.msgId=msgId;
MQStructObj.payload=payload;
MQStructObj.payloadSize=payloadSize;
MQStructObj.ttl=ttl;
MQStructObj.priority=priority;

    //Which one is better (Vector or Queue) in term of memory, speed and why

MSQ.push(MQStructObj);

    //OR

MQvector.push_back(MQStructObj);


return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ queue performance vector

8
推荐指数
2
解决办法
1万
查看次数

C++如何使用参数调用线程

可能重复:将
参数传递给_beginthreadex

我怎样才能调用TestFunction2,而不是TestFunction1ExecuteLocalThread使用beginthreadex作为TestFunction2包含3个额外的参数

unsigned __stdcall TestFunction1(void* timerPointer)
{
    unsigned result =0;
    printf("thread is running\n");
    return result;
}

unsigned __stdcall TestFunction2(void* timerPointer, wchar_t *appId, wchar_t *userName, wchar_t *password)
{
    unsigned result =0;
    printf("thread is running\n");
    return result;
}

void ExecuteLocalThread()
{
    HANDLE   heartBeatThread;
    unsigned int hbThreadID;
    heartBeatThread = (HANDLE)_beginthreadex(NULL, 0 , &TestFunction1, (void*)this, CREATE_SUSPENDED, &hbThreadID);
    ResumeThread( heartBeatThread );
}
Run Code Online (Sandbox Code Playgroud)

c++ multithreading

0
推荐指数
1
解决办法
334
查看次数

标签 统计

c++ ×2

multithreading ×1

performance ×1

queue ×1

vector ×1