草庐IT

Goroutine-safe

全部标签

go - 试图避免 goroutine 泄漏时出现 panic

我正在生成一些goroutine并想给它们一个channel来发回错误。在父goroutine中,我选择第一个错误并返回它,或者wg.Done()条件,它与关闭done同步>channel。延迟关闭errc以避免goroutine泄漏;但它会导致竞争条件。packagemainimport("log""sync""time")funcf(chchan结果:❗~/c/scrap(i)goruntest.go2018/05/0120:28:03fsendingavalue2018/05/0120:28:03fsentavalue2018/05/0120:28:03bufcclosed:tr

multithreading - 使用 goroutine 运行同一程序的另一个实例?

使用goroutines运行同一个go程序的多个实例是否是一种可接受的做法,例如运行gomain()?如果是这样,是否可以修改发送到goroutine(或os.Args[])的参数,以便main()函数不会创建无限数量的goroutine?然后goroutines应该能够通过channel相互通信。我知道goroutines共享相同的内存空间但有单独的堆栈,因此这可能会导致一些竞争条件问题。或者,也许,这是对Goroutines的不当使用,我应该坚持使用exec.Command()来执行可执行文件的另一个实例,并让这些实例通过JSON-RPC进行通信。感谢您的协助。

multithreading - 使用 goroutine 运行同一程序的另一个实例?

使用goroutines运行同一个go程序的多个实例是否是一种可接受的做法,例如运行gomain()?如果是这样,是否可以修改发送到goroutine(或os.Args[])的参数,以便main()函数不会创建无限数量的goroutine?然后goroutines应该能够通过channel相互通信。我知道goroutines共享相同的内存空间但有单独的堆栈,因此这可能会导致一些竞争条件问题。或者,也许,这是对Goroutines的不当使用,我应该坚持使用exec.Command()来执行可执行文件的另一个实例,并让这些实例通过JSON-RPC进行通信。感谢您的协助。

Android 中的 安全模式(safe mode)

前言安全模式是安卓系统的一种特殊模式,和WINDOWS的安全模式相似,在安全模式下用户可以轻松地修复手机系统的一些错误,方便快捷。由于第三方应用程序,可能会存在一定的兼容性问题,所以在安装软件后会出现系统文件报错、手机无法正常开机或者开机后系统程序不停报错的现象。遇到这种情况,若进行恢复出厂设置,手机中的资料是无法进行备份的,但是Android系统中添加了“安全模式”代码说明涉及的Frameworks的几个类frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.javaframeworks/b

java - 为什么我测试 golang goroutine 比 java Thread 慢

======================编辑2016年05月27日16:55解决=======================这个问题解决了!感谢@PaulHankin,你是对的!Java擅长做“for(){i=i+1}”,所以当我将代码更改为“for(){i=i+i}”时,java输了。(PS:使用JavaExecutorService确实让java结果不错,但还是不如goroutine,这里没有ExecutorService的例子)Java代码:importjava.util.ArrayList;importjava.util.List;publicclassTest{publ

java - 为什么我测试 golang goroutine 比 java Thread 慢

======================编辑2016年05月27日16:55解决=======================这个问题解决了!感谢@PaulHankin,你是对的!Java擅长做“for(){i=i+1}”,所以当我将代码更改为“for(){i=i+i}”时,java输了。(PS:使用JavaExecutorService确实让java结果不错,但还是不如goroutine,这里没有ExecutorService的例子)Java代码:importjava.util.ArrayList;importjava.util.List;publicclassTest{publ

go - 如何从长时间运行的 goroutine 发送更新?

我有一个goroutine用于长时间运行的作业。工作完成后,它将结果推送到channel。与此同时,当作业正在运行时,我想继续更新状态为RUNNING的API。到目前为止,我有以下代码:funcgetProgressTimeout()我是golang的新手。经过大量的反复试验和谷歌搜索,我已经达到了上面的代码。它现在正在工作。当我看到它时,我仍然觉得它不直观(这很可能是因为,我仍在努力学习Go的做事方式)。所以我的问题是,我可以将其重构为更好的形状吗?是否有一些适用于这种情况的现有模式?或者是否有一些完全不同的方法可以在作业运行时持续发送定期更新?此外,任何改进我的golang并发性的

go - 如何从长时间运行的 goroutine 发送更新?

我有一个goroutine用于长时间运行的作业。工作完成后,它将结果推送到channel。与此同时,当作业正在运行时,我想继续更新状态为RUNNING的API。到目前为止,我有以下代码:funcgetProgressTimeout()我是golang的新手。经过大量的反复试验和谷歌搜索,我已经达到了上面的代码。它现在正在工作。当我看到它时,我仍然觉得它不直观(这很可能是因为,我仍在努力学习Go的做事方式)。所以我的问题是,我可以将其重构为更好的形状吗?是否有一些适用于这种情况的现有模式?或者是否有一些完全不同的方法可以在作业运行时持续发送定期更新?此外,任何改进我的golang并发性的

image - 在 Go 中的 Goroutine 中运行和使用 SDL

我有一个包含多个循环的程序,每个循环都在一个Goroutine中运行。我需要在我的程序运行时插入或拔下显示器,所以我必须重新启动sdl让它找到我的新显示器,我通过sdl.quit()退出最后一个sdl和sdl.init(sdl.InitEverything)再次初始化它。我的问题是我必须在一个循环中处理sdl事件,如果我不这样做,它将变得无响应,但这个循环将阻止我的主代码。我不需要处理鼠标点击之类的任何事件,我只想显示一些简单的图片并对其进行操作,有没有办法停止事件或在goroutine中运行整个sdl?我试过了,但得到了奇怪的结果。这是我的结构:typeSDLstruct{windo

image - 在 Go 中的 Goroutine 中运行和使用 SDL

我有一个包含多个循环的程序,每个循环都在一个Goroutine中运行。我需要在我的程序运行时插入或拔下显示器,所以我必须重新启动sdl让它找到我的新显示器,我通过sdl.quit()退出最后一个sdl和sdl.init(sdl.InitEverything)再次初始化它。我的问题是我必须在一个循环中处理sdl事件,如果我不这样做,它将变得无响应,但这个循环将阻止我的主代码。我不需要处理鼠标点击之类的任何事件,我只想显示一些简单的图片并对其进行操作,有没有办法停止事件或在goroutine中运行整个sdl?我试过了,但得到了奇怪的结果。这是我的结构:typeSDLstruct{windo