当我尝试制作一个以字符串为键并且pthread_mutex_t为元素的地图时,
map<string, pthread_mutex_t> connectedClientsMutexes;
pthread_mutex_t myMutex;//= PTHREAD_MUTEX_INITIALIZER;
connectedClientsMutexes.insert(pair<string,pthread_mutex_t>(userName,myMutex));
while (1)
{
pthread_mutex_lock(&connectedClientsMutexes[userName]);
// do something here
}
Run Code Online (Sandbox Code Playgroud)
这会产生:
阶段3:pthread_mutex_lock.c:312:__pthread_mutex_lock_full:断言`( - (E))= 3 || "健壮"失败了.
我在C++中遇到了pthreads的奇怪错误,我尝试运行这段代码:
typedef struct
{
struct sockaddr_in clienAddr;
int clientLength;
string message;
}param;
pthread_t clientThread;
param sentParam ;
sentParam.clienAddr = clientAddress;
sentParam.clientLength= client_info;
sentParam.message=buffString;
cout <<"sentParam: "<<sentParam.message<<endl;
// it prints well.
int i = pthread_create(&clientThread, NULL, handleClientRequestRead,&sentParam );
cout <<"i: "<<i<<endl;
the function which be called
void* handleClientRequestRead(void* params)
{
// cout<<"params: "<< ;
string msg = (( param *)(params))->message;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试打印msg时它是空的.任何帮助将不胜感激