草庐IT

并发控制

全部标签

performance - Golang goroutine 在添加并发时变慢

我正在研究golang和goroutine的使用。使用此示例代码,在我具有4个逻辑CPU的PC上,我无法理解为什么我没有任何性能提升。如果我添加并发,那么它所花费的时间往往会比没有并发的原始时间慢。2017/10/2713:57:17Starting1threads2017/10/2713:57:27Idroutine:0rate:232.5581402017/10/2713:57:27Currenttotalratewas232.56K/s2017/10/2713:57:27Starting1threads2017/10/2713:57:37Idroutine:0rate:357.1

go - 如何限制与 Go API 的并发连接

我正在启动一个带有listenandserve的GoAPI来接受HTTP请求。我怎样才能实现以下目标?允许最多100个并发HTTP请求第101个请求(以及任何其他请求)应等待10分钟以尝试落入此“100个同时”限制(即希望前100个请求中的一些请求应该完成)如果10分钟过去了并且没有可用的请求“插槽”打开,则为一直在等待的请求返回错误接下来运行的请求101...102...x的顺序并不重要当前版本完全不可用:timeout:=time.After(10*time.Minute)tick:=time.Tick(15*time.Second)fullcmdfirst:=fmt.Sprint

multithreading - 具有高并发执行的 Golang http.Client 中的 panic

我正在创建一个系统,它是一个golang中的http服务器,它将根据收到的每个请求向另一个API执行多个请求。例如curllocalhost:8080/users?ids=1,2,3,4将执行多个并发获取:api.com/user/1api.com/user/2api.com/user/3api.com/user/4我遇到了一个问题,当http.Client有大量并发请求时(如果我点击localhost:8080/users?ids=1,2,3,4.....40AB4并发,或在我的浏览器中点击刷新)问题似乎与句子有关(第159行)resp,_:=client.Do(req)我的代码在这

go - 简单并发

这个问题在这里已经有了答案:Nooutputfromgoroutine(3个答案)关闭4年前。谁能解释一下这是如何工作的:packagemainimport("fmt""time")funcsay(sstring){fori:=0;i但是一旦我在main的例程中添加了go这个词,这就不起作用了packagemainimport("fmt""time")funcsay(sstring){fori:=0;i我认为这是因为它在执行goroutine之前完成。

go - 使用某些参数调用命令有效但不适用于其他参数但在控制台中有效

以下代码运行并输出10个进程的详细信息。packagemainimport("os/exec")funcmain(){print(top())}functop()string{app:="/usr/bin/top"cmd:=exec.Command(app,"-n10","-l2")out,err:=cmd.CombinedOutput()iferr!=nil{returnerr.Error()+""+string(out)}value:=string(out)returnvalue}但是,当我尝试使用附加参数“-ocpu”时(例如cmd:=exec.Command(app,"-ocp

ruby-on-rails - 在 Ruby 中并发

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭6年前。Improvethisquestion我希望在我的RubyonRails项目中使用Go语言的线程和并发特性。我有几种选择,其中之一是jRuby。但是,我不喜欢Java(个人喜好)。我听说GoLang是Java的完美替代品。它比Java更快、更安全。我看到人们将它的速度与C++进行比较,因为它的某些部分在Assembly本身中。人们甚至可以用Go从头开始​​编写像Apache这样的完整Web服务器。我真正计划的是:Go中的所有低级内容以

如何将值从html.editorfor()传递给我的控制器

这是VisualStudio生成的代码,当我添加了编辑功能的视图时我想通过内部的值由@Html.EditorFor()从视图到我的控制器。如何访问这些值?我可以在不手动声明文本框的情况下做到这一点吗?@using(Html.BeginForm("Save","my",FormMethod.Post)){@Html.AntiForgeryToken()User@Html.ValidationSummary(true,"",new{@class="text-danger"})@Html.HiddenFor(model=>model.Id)@Html.LabelFor(model=>model.Na

go - 打开新的控制台窗口

我可以使用哪些代码让我的golang程序可以打开一个新的控制台窗口?我有一个程序A正在运行程序B,因此程序B没有控制台窗口(stdin和stdout用于与程序A交互)。我希望程序B在新的控制台窗口(以及程序A的控制台窗口)中显示用户友好的信息,以便很容易看到正在发生的事情。 最佳答案 下面的代码可以在Ubuntu上运行,它是一个示例程序,除非您键入“新控制台”,否则它会回显输入,在这种情况下,它会在单独的控制台中再次执行。它通过执行:gnome-terminal-e请注意,这可能是特定于操作系统的,因为每个操作系统风格都有不同的打开

http - 在 Golang 中处理并发 HTTP 请求

我正在尝试处理一个包含200个URL的文件,并使用每个URL发出一个HTTP请求。我每次最多需要同时处理10个URL(代码应该阻塞,直到10个URL完成处理)。试图在go中解决它,但我一直在处理整个文件,并创建了200个并发连接。forscanner.Scan(){//loopthrougheachurlinthefile//sendeachurltogolangHTTPrequestgoHTTPrequest(scanner.Text(),channel,&wg)}fmt.Println(我该怎么办? 最佳答案 从channel中

unit-testing - 如何测试在 golang 中打印到控制台的方法?

我有下一个结构。packageloggerimport"fmt"typeIPrinterinterface{Print(valuestring)}typeConsolePrinterstruct{}func(cp*ConsolePrinter)Print(valuestring){fmt.Printf("thisisvalue:%s",value)}测试范围说我需要测试ConsolePrinterPrint方法。如何覆盖这个方法?谢谢。 最佳答案 根据@icza写的评论,我在下面编写了测试。funcTestPrint(t*testi