小编Ada*_*hns的帖子

使用互斥锁时出错

当我尝试制作一个以字符串为键并且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++ linux posix mutex pthreads

9
推荐指数
1
解决办法
4253
查看次数

C++中使用posix线程的一些奇怪的东西

我在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时它是空的.任何帮助将不胜感激

c++ linux pthreads

-1
推荐指数
1
解决办法
107
查看次数

标签 统计

c++ ×2

linux ×2

pthreads ×2

mutex ×1

posix ×1