草庐IT

init_MUTEX

全部标签

c++ - `unique_lock`、 `scoped_lock` 和 `lock_guard` 中指定的 mutex_type 的用例是什么?

用于保护std::mutex的c++11mutexRAII类型都有一个typedef:typedefMutexmutex_type;std::lock_guard::mutex_typestd::unique_lock::mutex_typestd::scoped_lock::mutex_type这个成员typedef有什么意义?起初我认为它可以用来概括创建一个对象来移动锁(在unique_lock的情况下)例如:templatevoidfunction(SomeLockin)SomeLock::mutex_typenewMutex;//Dosomething但我无法想象它的用途。需要

c++ - 'mutex' 不是 MinGW 5.3.0 中 'std' 的成员

我正在使用MinGW5.3.0和Crypto++5.6.5:C:\MinGW>g++-std=c++11-s-D_WIN32_WINNT=0x0501LOG.cpp-U__STRICT_ANSI__Decclass.cpp\-IC:\\MinGW\\-IC:\\MinGW\\boost-LC:\\MinGW-lssl-lcrypto-lcryptopp-lgdi32-lPCRYPT\-lz-ltiny-lwsock32-lws2_32-lShlwapi编译结果出现如下错误。c:\mingw\cryptopp565\include\cryptopp\misc.h:287:14:error

c++ - 在什么时候将 unique_lock 与 shared_mutex 一起使用?

通常,当使用“普通”互斥量时,您会像在remove1()中那样使用它。但是,现在有了shared_lock和unique_lock,是否应该先使用共享锁,只有在必要时才使用唯一锁?请注意,当模型不存在时,remove()可能不需要unique_lock。voidremove1(intid){std::unique_locklock(mutex_);for(autoit=models_.begin();it!=models_.end();++it)if((*it)->getId()==id){it=models_.erase(it);return;{}voidremove2(intid)

c++ - 为什么 pthread_mutex_t 在尝试通过来自两个不同进程的共享内存进行锁定时会出现段错误?

我为打算在两个进程之间使用的pthread_mutex_t编写了一个super简单的包装器://basicversionjusttotestusingitbetweentwoprocessesstructMyLock{public:MyLock(){pthread_mutexattr_init(&attr);pthread_mutexattr_setpshared(&attr,PTHREAD_PROCESS_SHARED);pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_ADAPTIVE_NP);pthread_mutex_init(&loc

c++ - 如何在 std::map 中使用 boost::mutex 作为映射类型?

我想像这样在另一个映射中锁定键/索引:std::mappointCloudsMutexes_;pointCloudsMutexes_[index].lock();但是,我收到以下错误:/usr/include/c++/4.8/bits/stl_pair.h:113:error:nomatchingfunctionforcallto'boost::mutex::mutex(constboost::mutex&)':first(__a),second(__b){}^它似乎适用于std::vector,但不适用于std::map。我做错了什么? 最佳答案

c++ - 访问 std::recursive_mutex 使用的所有者计数器

我有一个案例,我的算法的决定是基于共享std::recursive_mutex的深度。#include#include#includeintg_i=0;std::recursive_mutexg_i_mutex;voidbar(){std::lock_guardlock(g_i_mutex);switch(get_counter(g_i_mutex)){//somewaytofindthenumberofownerscase1:std::coutlock(g_i_mutex);std::cout我读到递归互斥锁保存某种使用计数,并且它们会随着每次锁定/解锁调用而增加和减少它,有没有办法

c++ - 为什么要使用 std::mutex 而不是 boost::shared_mutex?

我的理解是:std::mutex会阻塞其他线程,无论它们是想读还是写,而boost::shared_mutex将允许多次读取。所以我的问题是,我是否应该总是更喜欢boost::shared_mutex而不是普通的std::mutex以允许并行读取的可能性?使用普通的std::mutex感觉就像我在否认一些可能的读取吞吐量......? 最佳答案 我不能说出它们两者之间的性能,但我的猜测是,由于额外的逻辑,boost::shared_mutex可能会更慢。除此之外,根据您拥有的读者数量,您可能会阻塞写入线程的时间比您希望的要长,因为它

c++ - 为什么 braced-init-list 在函数调用和构造函数调用中的行为不同?

使用clang3.5.0和gcc4.9.1编译以下代码会在最后一条语句处产生错误。#includestructFoo{Foo(intx,inty){std::cout为什么Foo({1,2})可以,而bar({1,2})不行?特别是,如果能了解基本原理会很棒。 最佳答案 Foo({1,2})创建一个临时Foo对象并调用复制构造函数。请参阅此修改后的带有复制构造函数删除的示例:http://coliru.stacked-crooked.com/a/6cb80746a8479799它的错误是:main.cpp:6:5:note:cand

iphone - 在 init 中声明 block 安全吗?

我需要调用一个带有block的函数。如果我在init方法内部这样做会导致问题吗?-(id)initWithObjectThatWantsABlock:(Blar*)blar{if((self=[superinit])){[blartakeBlock:^{NSLog(@"Hi");}];}} 最佳答案 是的。它仍然只是一个函数,只要它不依赖于您尚未初始化的任何东西,它应该没问题。 关于iphone-在init中声明block安全吗?,我们在StackOverflow上找到一个类似的问题:

ios - 在 alloc 和 init 上保留计数

有些网站是这样说的:@property(nonatomic,strong)MyObject*foo;self.foo=[[MyObjectalloc]init];将保留计数增加到2但是自从最新的xcode版本或ARC,这应该不是问题吧?根据视频我们可以去掉所有的autorelease因此:@property(nonatomic,strong)MyObject*foo;self.foo=[[[MyObjectalloc]init]autorelease];变成这样@property(nonatomic,strong)MyObject*foo;self.foo=[[MyObjectallo