草庐IT

lock-free

全部标签

c - Intel 指令的 LOCK 前缀。重点是什么?

我看了Intel手册,发现指令有一个锁前缀,可以防止处理器同时写入同一个内存位置。我对此很兴奋。我想它可以用作硬件互斥体。所以我写了一段代码来试一试。结果非常令人沮丧。该锁不支持MOV或LEA指令。手册上说LOCK只支持ADD、ADC、AND、BTC、BTR、BTS、CMPXCHG、CMPXCH8B、DEC、INC、NEG、NOT、OR、SBB、SUB、XOR、XADD和XCHG。此外,如果LOCK前缀与这些指令之一一起使用并且源操作数是内存操作数,则可能会生成未定义的操作码异常(#UD)。我想知道为什么那么多的限制,那么多的限制让LOCK显得毫无用处。我不能用它来保证一般的写操作不会

linux - CVS 错误 : failed to create lock directory. .. 权限被拒绝

我正在使用TortoiseCVS访问CVS服务器。我收到以下错误:InD:\source\foo:"C:\ProgramFiles\CVSNT\cvs.exe"-qupdate-P-dCVSROOT=:ssh:annan@foo-bar.co.uk:/home/cvsrootcvsupdate:failedtocreatelockdirectoryfor`/home/cvsroot/foo'(/var/lock/cvs/foo/#cvs.lock):Permissiondeniedcvsupdate:failedtoobtaindirlockinrepository`/home/cvs

linux - CVS 错误 : failed to create lock directory. .. 权限被拒绝

我正在使用TortoiseCVS访问CVS服务器。我收到以下错误:InD:\source\foo:"C:\ProgramFiles\CVSNT\cvs.exe"-qupdate-P-dCVSROOT=:ssh:annan@foo-bar.co.uk:/home/cvsrootcvsupdate:failedtocreatelockdirectoryfor`/home/cvsroot/foo'(/var/lock/cvs/foo/#cvs.lock):Permissiondeniedcvsupdate:failedtoobtaindirlockinrepository`/home/cvs

java - 明明使用solr出现 'Lock obtain timed out'怎么解决?

我的Solr系统(Solr版本3.6.1)有两个核心。当我在我们的专用Solr服务器上调用以下命令行来添加文件然后索引文件时:java-Durl=http://solrprod:8080/solr/original/update-jar/home/solr/solr3/biomina/solr/post.jar/home/solr/tmp/2008/c2m-dump-01.noDEID_clean.xml我在/usr/share/tomcat7/logs/solr.2013-12-11.log文件中遇到异常(等待大约6分钟后):SEVERE:org.apache.lucene.stor

java - 明明使用solr出现 'Lock obtain timed out'怎么解决?

我的Solr系统(Solr版本3.6.1)有两个核心。当我在我们的专用Solr服务器上调用以下命令行来添加文件然后索引文件时:java-Durl=http://solrprod:8080/solr/original/update-jar/home/solr/solr3/biomina/solr/post.jar/home/solr/tmp/2008/c2m-dump-01.noDEID_clean.xml我在/usr/share/tomcat7/logs/solr.2013-12-11.log文件中遇到异常(等待大约6分钟后):SEVERE:org.apache.lucene.stor

linux - spin_lock 和 spin_unlock 是否会影响单 cpu 机器上 SMP 内核的性能?

在我的Ubuntu机器上,正在运行的默认内核镜像是为smp(CONFIG_SMP=y)构建的。但是这台机器只有1个cpu。在单处理器内核上,与smp内核不同,spin_lock/unlock是空函数。那么spin_lock()和spin_unlock()在此设置中的行为如何?这种特定于smp的代码是否会对性能产生影响? 最佳答案 当前的Linux内核包含一个补丁,您可以使用术语“SMP替代品”在谷歌上搜索该补丁。简而言之,在引导过程中,如果内核检测到它正在单处理器机器上运行,自旋锁功能将通过无操作进行热修补。

linux - spin_lock 和 spin_unlock 是否会影响单 cpu 机器上 SMP 内核的性能?

在我的Ubuntu机器上,正在运行的默认内核镜像是为smp(CONFIG_SMP=y)构建的。但是这台机器只有1个cpu。在单处理器内核上,与smp内核不同,spin_lock/unlock是空函数。那么spin_lock()和spin_unlock()在此设置中的行为如何?这种特定于smp的代码是否会对性能产生影响? 最佳答案 当前的Linux内核包含一个补丁,您可以使用术语“SMP替代品”在谷歌上搜索该补丁。简而言之,在引导过程中,如果内核检测到它正在单处理器机器上运行,自旋锁功能将通过无操作进行热修补。

c++ - 跨 2 个进程而不是线程锁定自由/原子操作

我正在使用共享内存跨多个进程共享一些数据;我使用进程间互斥锁来实现同步。我的问题如下:是否可以使用无锁数据结构和/或原子操作来实现更快的同步,而无需在2个进程之间使用互斥体?如果不是,您知道造成这种情况的主要原因是什么吗?它们仅用于同步同一进程的线程。这些概念是否也可移植到流程中?如果不是,您是否知道任何更快的跨进程共享/同步数据的方法? 最佳答案 Aretheseconceptsportabletoprocessesaswell?是的,原子操作对于线程和进程都是通用的,IIF原子使用的内存是共享的。原子操作是处理器本身的特定指令,

c++ - 跨 2 个进程而不是线程锁定自由/原子操作

我正在使用共享内存跨多个进程共享一些数据;我使用进程间互斥锁来实现同步。我的问题如下:是否可以使用无锁数据结构和/或原子操作来实现更快的同步,而无需在2个进程之间使用互斥体?如果不是,您知道造成这种情况的主要原因是什么吗?它们仅用于同步同一进程的线程。这些概念是否也可移植到流程中?如果不是,您是否知道任何更快的跨进程共享/同步数据的方法? 最佳答案 Aretheseconceptsportabletoprocessesaswell?是的,原子操作对于线程和进程都是通用的,IIF原子使用的内存是共享的。原子操作是处理器本身的特定指令,

c - 使用 mmap 和 munmap 实现你自己的 malloc/free

我使用mmap实现了自己的ma​​lloc和free。现在由于与free不同,munmap也将长度作为参数,因此我将长度作为附加信息放在映射内存中。我的ma​​lloc和free的代码如下所示。我想问一下,如果这段代码很好,或者我是否仍然遗漏任何东西或以错误的方式做某事。void*malloc(size_tsize){int*plen;intlen=size+sizeof(size);//Addsizeof(size)forholdinglength.plen=mmap(0,len,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,0,0);