我正在构建一个庞大的消息队列,并且只使用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) 可能重复:将
参数传递给_beginthreadex
我怎样才能调用TestFunction2,而不是TestFunction1在ExecuteLocalThread使用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)