#include <pthread.h>
#include <iostream>
using namespace std;
class lock
{
public:
lock(pthread_mutex_t *mutex):
mutex_(mutex)
{
pthread_mutex_lock(this->mutex_);
}
~lock()
{
pthread_mutex_unlock(this->mutex_);
}
private:
pthread_mutex_t *mutex_;
};
int main(int argc, char *argv[])
{
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int num = ::atoi(argv[1]);
int begin = clock();
for (int i = 0; i < num; ++i)
{
pthread_mutex_lock(&mutex);
pthread_mutex_unlock(&mutex);
}
int end = clock();
cout << (end - begin)<< endl;
begin = clock();
for (int i = 0; i < num; ++i)
{
lock a(&mutex);
}
end = clock();
cout << (end - begin)<< endl;
}
100000000 num 测试 无明显差距
在加锁和释放锁本身并不太消耗耗时, 耗时在于锁被锁住 而一方也要加锁 而处于等待阶段