草庐IT

language-concurrency

全部标签

concurrency - 在 Go 中分配一个指针是原子的吗?

在Go中分配一个指针是原子的吗?我需要在锁中分配一个指针吗?假设我只想将指针分配给nil,并希望其他线程能够看到它。我知道在Java中我们可以为此使用volatile,但Go中没有volatile。 最佳答案 在go中唯一保证是原子的是sync.atomic中的操作。.所以如果你想确定你要么需要锁,例如sync.Mutex或使用其中一种原子原语。我不建议使用原子原语,因为你必须在任何使用指针的地方使用它们,而且它们很难正确使用。使用mutex是OK的风格——你可以定义一个函数来返回当前指针并非常容易地锁定,例如类似的东西import

concurrency - 在 Go 中分配一个指针是原子的吗?

在Go中分配一个指针是原子的吗?我需要在锁中分配一个指针吗?假设我只想将指针分配给nil,并希望其他线程能够看到它。我知道在Java中我们可以为此使用volatile,但Go中没有volatile。 最佳答案 在go中唯一保证是原子的是sync.atomic中的操作。.所以如果你想确定你要么需要锁,例如sync.Mutex或使用其中一种原子原语。我不建议使用原子原语,因为你必须在任何使用指针的地方使用它们,而且它们很难正确使用。使用mutex是OK的风格——你可以定义一个函数来返回当前指针并非常容易地锁定,例如类似的东西import

concurrency - 并发算法思考并在 Go 中学习

我有学习和实践标准、顺序的历史算法,我对它们已经相当满意了。但是,我对并发编程的经验几乎为零并同时思考。从顺序的角度来看,Go看起来非常有趣使用的语言。但是,除了Go教程和EffectiveGo已经假设了并发编程的先验知识,我真的不知道从哪里开始学习并发编程技能足够好,这样我就可以有效地使用Go的支持他们。谁能告诉我一个好的起点(除了教程)? 最佳答案 http://www.usingcsp.com/cspbook.pdf-这就是RobPike的建议。 关于concurrency-并发算

concurrency - 并发算法思考并在 Go 中学习

我有学习和实践标准、顺序的历史算法,我对它们已经相当满意了。但是,我对并发编程的经验几乎为零并同时思考。从顺序的角度来看,Go看起来非常有趣使用的语言。但是,除了Go教程和EffectiveGo已经假设了并发编程的先验知识,我真的不知道从哪里开始学习并发编程技能足够好,这样我就可以有效地使用Go的支持他们。谁能告诉我一个好的起点(除了教程)? 最佳答案 http://www.usingcsp.com/cspbook.pdf-这就是RobPike的建议。 关于concurrency-并发算

language-agnostic - Go中的并行不同字数

雅各布·奥斯特加德presented这个挑战:Writeaprogramthatreadstextfromstandard-input,andreturns(prints)thetotalnumberofdistinctwordsfoundinthetext.我们如何通过并行编程来应对这一挑战(最好是使用Go,但用英文描述就足够了)? 最佳答案 有几种可能性,但我猜你的意思是“高效”?一般的想法是将文本拆分为可管理的block,将这些block放入队列中,并让多个消费者处理这些block。对我来说,这看起来像是一个典型的Map/Re

language-agnostic - Go中的并行不同字数

雅各布·奥斯特加德presented这个挑战:Writeaprogramthatreadstextfromstandard-input,andreturns(prints)thetotalnumberofdistinctwordsfoundinthetext.我们如何通过并行编程来应对这一挑战(最好是使用Go,但用英文描述就足够了)? 最佳答案 有几种可能性,但我猜你的意思是“高效”?一般的想法是将文本拆分为可管理的block,将这些block放入队列中,并让多个消费者处理这些block。对我来说,这看起来像是一个典型的Map/Re

concurrency - Golang 防止 channel 阻塞

我正在构建一个使用websockets的服务器。目前每个连接的客户端都使用两个goroutines。一种用于阅读,一种用于写作。编写goroutine基本上是监听一个channel以获取它应该发送的消息,然后尝试传递它们。typeUserstruct{sendchan[]byte...}func(u*User)Send(msg[]byte){u.send问题是,从客户端A读取可能会导致向客户端B写入。假设到B的连接有一些问题(例如非常慢)并且它的发送channel已经满了。当前的行为是,尝试向channel添加消息现在开始阻塞,直到从channel中删除某些内容。这意味着,现在A会一直

concurrency - Golang 防止 channel 阻塞

我正在构建一个使用websockets的服务器。目前每个连接的客户端都使用两个goroutines。一种用于阅读,一种用于写作。编写goroutine基本上是监听一个channel以获取它应该发送的消息,然后尝试传递它们。typeUserstruct{sendchan[]byte...}func(u*User)Send(msg[]byte){u.send问题是,从客户端A读取可能会导致向客户端B写入。假设到B的连接有一些问题(例如非常慢)并且它的发送channel已经满了。当前的行为是,尝试向channel添加消息现在开始阻塞,直到从channel中删除某些内容。这意味着,现在A会一直

go - The Go Language 有 SAML 库吗?

我看到goauth和go-oauthOAuth库是为GoProgrammingLanguage编写的,但几个小时的在线搜索对SAML一无所获。.我想使用Go为Web服务使用SAML来实现SSO支持,但是如果没有用于Go的SAML库,看起来我将不得不将SAML逻辑“包装”在一个单独的服务中,用另一种语言实现。有没有人知道Go友好的SAML库,或者知道从Go程序中使用Java、C或PHP库的一些技巧? 最佳答案 我用过gosaml它工作得很好,但也有go-saml来自机器人和铅笔。我想,一年后,回答这个问题会很好,因为对于那些为Go寻找

go - The Go Language 有 SAML 库吗?

我看到goauth和go-oauthOAuth库是为GoProgrammingLanguage编写的,但几个小时的在线搜索对SAML一无所获。.我想使用Go为Web服务使用SAML来实现SSO支持,但是如果没有用于Go的SAML库,看起来我将不得不将SAML逻辑“包装”在一个单独的服务中,用另一种语言实现。有没有人知道Go友好的SAML库,或者知道从Go程序中使用Java、C或PHP库的一些技巧? 最佳答案 我用过gosaml它工作得很好,但也有go-saml来自机器人和铅笔。我想,一年后,回答这个问题会很好,因为对于那些为Go寻找