【求助】关于pthread_mutex_t变量的初始化问题

god_fish 2007-12-08 06:39:25
#include <pthread.h>
#include <stdio.h>

class A
{
public:
A();
pthread_mutex_t m;
};

A::A():m (PTHREAD_MUTEX_INITIALIZER)
{
}

int main()
{
return 0;
}

编译出现错误:
testA.cpp: In constructor `A::A()':
testA.cpp:14: parse error before `{' token
testA.cpp:14: parse error before `{' token

请问这是什么原因?应该如何初始化呢?
...全文
526 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
pottichu 2007-12-08
  • 打赏
  • 举报
回复

#include <pthread.h>
#include <stdio.h>

class A
{
public:
A();
private:
pthread_mutex_t m;
};

A::A()
{
pthread_mutex_init(&m, NULL);
}

int main()
{
return 0;
}

pottichu 2007-12-08
  • 打赏
  • 举报
回复

//lock.h 头文件
#ifndef AUTO_LOCK_H
#define AUTO_LOCK_H

#include <pthread.h>

namespace util
{

class LockableObject {
public:
LockableObject(){};
virtual ~LockableObject(){};

virtual void lock() = 0;
virtual void unlock() = 0;
};

class ThreadMutex : public LockableObject {
public:
ThreadMutex();
virtual ~ThreadMutex();
virtual void lock();
virtual void unlock();

private:
pthread_mutex_t m_cs;
};

class AutoLock {
public:

AutoLock(LockableObject* pLockable);
~AutoLock();

private:
LockableObject* m_pLockable;
};

}
#endif




 #include "lock.h"
#include <stdio.h>
//lock.cpp 头文件
namespace util
{

ThreadMutex::ThreadMutex() {
pthread_mutex_init(&m_cs, NULL);
}

ThreadMutex::~ThreadMutex() {
pthread_mutex_destroy(&m_cs);
}

void ThreadMutex::lock() {
pthread_mutex_lock(&m_cs);
}

void ThreadMutex::unlock() {
pthread_mutex_unlock(&m_cs);
}

AutoLock::AutoLock(LockableObject* pLockable) {
m_pLockable = pLockable;
m_pLockable->lock();
}

AutoLock::~AutoLock() {
m_pLockable->unlock();
}

}






//main.cpp
#include <stdio.h>
#include "lock.h"
using namespace util;

int main(int argc, char *argv[])
{
ThreadMutex cs;
AutoLock(cs);

return 0;
}

23,216

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧