【发布时间】:2014-10-03 11:01:30
【问题描述】:
我一直发现 Java 同步语句是一种干净的方式来执行互斥锁,例如锁定和解锁:
public void addName(String name) {
synchronized(this) {
lastName = name;
nameCount++;
}
nameList.add(name);
}
尽管 Java 中使用的监视器和 pthread 互斥锁的基本概念不同,但最基本的 pthread 互斥锁通常用作:
void addName(char* name) {
int status = -1;
status = pthread_mutex_lock(this->lock);
if (status == 0) {
this->lastName = name;
this->nameCount++;
pthread_mutex_unlock(this->lock);
}
nameList->add(name);
}
我知道上面的代码并没有真正利用 pthread 互斥锁的功能。它也不处理所有错误情况。然而,这可能是使用 pthread 互斥锁的最常见方式。话虽如此,我认为为这种同步有一个更清晰的习语会很好:
public void addName(char* name) {
synchronized(this->lock) {
this->lastName = name;
this->nameCount++;
}
nameList.add(name);
}
那么在 C、C++ 中可以做到这一点吗?
【问题讨论】:
标签: c++ c synchronization mutex synchronized