草庐IT

去原子

全部标签

multithreading - App Engine Channel API 的线程安全/原子性

当我尝试使用GoogleAppEngine的ChannelAPI从两个或多个goroutines和/或任务队列发送消息时会发生什么?例如gochannel.Send(context,clientID,"Hello")gochannel.Send(context,clientID,"World")我知道在GAEGo中,所有goroutines都被多路复用到一个线程上。然而,这仍然允许在I/O期间进行抢占,并且channel发送可能符合I/O的条件。GAE开发服务器似乎序列化了所有请求,所以我没有看到任何channel发送重叠。生产服务器似乎允许一些请求并发,但channel发送看起来是原

java - couchbase golang json 原子增量

在其他couchbaseSDK中是否有类似于计数器的golangAPI可以帮助我们自动增加json文档中的某些字段?例如,我有一个下面的结构,其中有两个字段将与文档D1相关联typeCounterstruct{c1string`json:"c1"`c2string`json:"c2"`}对于传入的每个http请求,我想对c1和c2进行原子增量。因为它在一个json文档中,所以我无法使用GET并且不确定如何使用golang来使用计数器方法。 最佳答案 在文档中不可能有原子计数器,您有两种选择来解决这个问题:1)让您的文档引用单独的原子

mysql - 原子更新和备份 ON DUPLICATE KEY insert else - golang sql 语句

在golang中组合两个语句(INSERT或(BACKUP和UPDATE))并自动执行它们的最佳方式是什么?我发现了这个类似的问题:https://codereview.stackexchange.com/questions/186909/query-select-and-insert-if-not-exists?newreg=067063956a834327883542c3171a22d4但是解决方案没有满足以下要求中的2个:对DUPLICATEKEY的值进行备份,使用标准SQL不使用存储过程但是保持原子性。 最佳答案 这更像是一

go - 更新,选择原子。欧姆

我可以在gorm、psql中做这样的事情吗?UPDATEjobSETstatus='RUNNING'WHEREstatus='PENDING'RETURNING*我想通过单个原子操作获取更新更改的所有行。如果还有其他解决方案请写出来。 最佳答案 据我所知可能只有一点点缺点假设您的模型名为Job,您可以这样做...varjobs[]Jobdb.Find(&jobs).Where("status=?",StatusPending).Update("status",StatusRunning)受影响的行将在jobsvar中,但我不得不说您

memory - 为什么使用单独的线程原子操作更快?

我有两段代码,桌面上有32个内核。代码A使用32个线程并执行以下操作,1)将值写入内存中的一些随机位置2)原子地向全局变量添加一个值。代码B使用16个线程将值写入随机位置,并使用另外16个线程以原子方式将值添加到全局变量。我想知道为什么代码B在每秒对全局变量执行多少原子操作方面更快。这里是代码Avarauint64=0constN=10*1024*1024vardata[N]uint64funcmain(){fori:=0;i这里是代码Bvarauint64=0constN=10*1024*1024vardata[N]uint64funcmain(){fori:=0;i

go - `make(chan _, _)` 是原子的吗?

修改消费者正在读取的channel是否线程安全?考虑以下代码:funcmain(){channel:=make(chanint,3)channel_ptr:=&channelgosupplier(channel_ptr)goconsumer(channel_ptr)temp=*channel_ptr//Importantbit*channel_ptr=make(chanint,5)more:=trueformore{select{casemsg:=如果channel和make以我希望的方式工作,我应该获得以下属性:程序总是输出01234程序永远不会因尝试从未初始化的channel读取而

go - 同步/原子 StoreInt32 奇怪的行为

此代码已简化并描述了我的问题。atomic.StoreInt32似乎不起作用,但我不确定为什么。packagemainimport("fmt""sync/atomic")typeslavestruct{failedint32}funcNewSlave()slave{returnslave{0}}func(workerslave)Fail(){atomic.StoreInt32(&worker.failed,1)//Here'stheproblem.}func(workerslave)IsFailed()bool{failed:=atomic.LoadInt32(&worker.fail

go - sync.Map 是原子的吗?我主要是指加载、存储、加载或存储、删除

作为tile,我指的是Go包sync.Map,它的功能可以被认为是原子的吗?主要是Load、Store、LoadOrStore和Delete函数。我也建立了一个简单的例子goplayground,是否保证只有一个goroutine可以进入代码范围15-17?正如我的测试似乎可以保证。请帮忙解释一下。 最佳答案 godocsync包的页面说:“Map类似于Gomap[interface{}]interface{},但多个goroutine并发使用是安全的,无需额外的锁定或协调。”此语句保证不需要额外的互斥锁或跨goroutine同步。

xml - 在 XML 中,原子节点与叶节点是一回事吗?

我正在学习W3School网站上有关XML的教程。这是我所在的页面:http://www.w3schools.com/xsl/xquery_terms.asp我对原子节点和叶节点之间的区别有点困惑。它们是一样的吗?我知道叶节点是没有任何子节点的节点,但似乎给定示例中的原子节点也没有任何子节点。W3Schools网站说“原子值是没有子节点或父节点的节点。”一个节点不可能没有父节点,因为XML文档中的所有节点都必须位于根节点(文档根)下?谁能给我解释一下,我很困惑。谢谢。 最佳答案 我发现w3schools通常是查找我曾经知道但忘记的信

xml - axis step child::element 不能在这里使用:上下文项是一个原子值

我不确定为什么我会在我的XSLT中收到以下错误:Axisstepchild::element(_SetMax42,xs:anyType)cannotbeusedhere:thecontextitemisanatomicvalue似乎在xsl:when条件上使用count似乎会导致它,但我不明白为什么或如何解决这个问题以获得我需要的东西。=count($_LoopVar_102_1_set)">=count($_LoopVar_102_0_set)"> 最佳答案 代替count(_SetMax42)使用count($_SetMax42