草庐IT

pthread_mutex_lock

全部标签

c++ - _locking() 到底做了什么?

正在寻找this的答案问题我找到函数_locking().There告诉它Locksorunlocksbytesofafile(实际上我无法理解这句话的真正含义)。如果有人有使用该功能的经验,是否可以使用该功能解决第一个问题中描述的问题? 最佳答案 引用您链接的MSDN页面:int_locking(intfd,intmode,longnbytes);The_lockingfunctionlocksorunlocksnbytesbytesofthefilespecifiedbyfd.Lockingbytesinafileprevent

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++ - is_lock_free() 在升级到 MacPorts gcc 7.3 后返回 false

以前,在AppleLLVM9.1.0中,128位结构上的is_lock_free()已返回true。为了获得完整的std::optional支持,我随后升级到MacPortsgcc7.3。在我第一次尝试编译时,我遇到了这个臭名昭著的showstopper链接器错误:Undefinedsymbolsforarchitecturex86_64:"___atomic_compare_exchange_16",referencedfrom:我知道我可能需要添加-latomic。使用AppleLLVM9.1.0,我不需要它,对此我有一种非常糟糕的预感。如果它是无锁的,你通常不需要链接到任何额外的

c++ - CMutex::Lock 与 CSingleLock::Lock

我被要求支持一些遗留代码,我看到了一些让我摸不着头脑的事情。在某些代码段中,我看到类实例使用CMutex实例来同步方法执行。例如classCClassA:publicCObject{public:voidDoSomething();private:CMutexm_mutex;}voidCClassA::DoSomething(){m_mutex.Lock();//...logic...m_mutex.Unlock();}在同一项目的其他地方,我发现代码正在使用CSingleLockclassCClassB:publicCObject{public:voidDoSomething();p

c++ - 为什么在极少数情况下 pthread_exit() 在 pthread_detach() 之后调用时会导致 SEGV?

我在调用pthread_join()时遇到了一个C++无法轻易重现的SEGV(大约每100,000次测试运行中就会出现一次),因为我的应用程序正在关闭。我检查了errno的值,它是零。这是在Centosv4上运行的。在什么情况下pthread_join()会得到一个SEGV?这可能是某种竞争条件,因为它非常罕见。有人建议我不应该调用pthread_detach()和pthread_exit(),但我不清楚原因。我的第一个工作假设是pthread_join()被调用,而pthread_exit()仍在另一个线程中运行,这不知何故导致了SEGV,但是许多人表示这不是问题。在应用程序退出期间

c++ - 一个类中的pthread

大家好,考虑到下面的代码(用g++-lpthreadthread_test.cpp编译),我如何从“thread_function”中知道我在第几线程?如果您有任何其他建议,请告诉我。谢谢!thread_test.cpp:#include#include#include#includeclassA{public:A();voidrun();private:staticvoid*thread_function(void*ptr);pthread_tm_thread1,m_thread2;staticintm_global;};intA::m_global=0;A::A(){intret1

c++ - pthreads:触发其他线程的线程

您好,我是多线程编程的新手。我正在尝试创建一个代码来创建一个线程THREAD1,在它完成某些操作后,它会触发另外两个线程,比如THREAD2和THREAD3,然后退出。我写了两个可能的解决方案。1)条件变量的使用(不起作用:在某些情况下我遇到了死锁):pthread_mutex_tready_mutex=PTHREAD_MUTEX_INITIALIZER;pthread_cond_tready_cond=PTHREAD_COND_INITIALIZER;boolready=false;void*trigger(void*);void*func1(void*);void*func2(vo

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++ - 触发 COM 事件时调用 Lock()/Unlock() 的目的是什么?

ATLCOM服务器中触发事件的一段典型代码如下(从thisquestion复制并略微删减):HRESULTFire_MessageTrigger(){HRESULThr=S_OK;T*pThis=static_cast(this);intcount=m_vec.GetSize();for(inti=0;iLock();//I'maskingaboutthis...CComPtrpunkConnection=m_vec.GetAt(i);pThis->Unlock();//andthisIDispatch*pConnection=static_cast(punkConnection.p)