引入强制执行的读写锁
This commit is contained in:
45
main.cpp
45
main.cpp
@@ -5,6 +5,7 @@
|
||||
#include <chrono>
|
||||
#include <iomanip>
|
||||
#include <gtest/gtest.h>
|
||||
#include <mutex/shared_mutex.h>
|
||||
|
||||
class RedBlackTree : public ling::RedBlackTree<int> {
|
||||
protected:
|
||||
@@ -28,6 +29,50 @@ auto duration = std::chrono::duration_cast<std::chrono::microseconds>(__ling_end
|
||||
std::cout << text << ": " << std::fixed << std::setprecision(6) <<((double)duration.count() / 1000000) << " 秒(" << duration.count() <<" 微秒)" << std::endl;\
|
||||
}while(false)
|
||||
|
||||
class mutex_test {
|
||||
public:
|
||||
int test() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int test_const() const {
|
||||
return 2;
|
||||
}
|
||||
};
|
||||
|
||||
TEST(资源管理, 1) {
|
||||
auto mutex = ling::shared_mutex<mutex_test>(mutex_test());
|
||||
|
||||
auto ptr = std::make_shared<mutex_test>();
|
||||
{
|
||||
auto lock = mutex.lock();
|
||||
lock->test();
|
||||
lock->test_const();
|
||||
}
|
||||
{
|
||||
auto shared = mutex.lock_shared();
|
||||
auto shared2 = mutex.lock_shared();
|
||||
shared->test_const();
|
||||
shared2->test_const();
|
||||
}
|
||||
{
|
||||
auto lock = mutex.try_lock();
|
||||
ASSERT_TRUE(lock);
|
||||
auto lock_2 = mutex.try_lock();
|
||||
ASSERT_FALSE(lock_2);
|
||||
auto lock_3 = mutex.try_lock_shared();
|
||||
ASSERT_FALSE(lock_3);
|
||||
}
|
||||
{
|
||||
auto lock = mutex.try_lock_shared();
|
||||
ASSERT_TRUE(lock);
|
||||
auto lock_2 = mutex.try_lock();
|
||||
ASSERT_FALSE(lock_2);
|
||||
auto lock_3 = mutex.try_lock_shared();
|
||||
ASSERT_TRUE(lock_3);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
TEST(排序, 堆排序测试) {
|
||||
std::random_device rd;
|
||||
|
||||
Reference in New Issue
Block a user