草庐IT

线程信息

全部标签

go - 为什么当我在 go 中添加另一个阻塞线程时信号处理程序不起作用?

我正在尝试构建一个非常简单的TCP服务器/客户端。我希望程序在被ctrl-c中断时可以关闭连接。如果我只在主线程中发送消息或只接收消息,一切正常。这是客户端的代码。packagemainimport("fmt""os""os/signal""syscall""net""bufio""io""time")const(TIMEOUT=10)funcmain(){iflen(os.Args)2{timeout,_=time.ParseDuration(os.Args[2])}iftimeout==0{timeout=time.Duration(TIMEOUT*time.Second)}con

mongodb - Golang,mgo 为用户更新详细信息

我在更新mongo数据库上的用户时遇到了一些问题。基本上我想通过用户名选择用户而不是编辑其详细信息。我正在使用GorillaMux和mgo连接MongoDB。代码如下:funcViewUserHandler(whttp.ResponseWriter,r*http.Request){vars:=mux.Vars(r)username:=vars["username"]session,err:=mgo.Dial("mongodb://DATABASE_URL")iferr!=nil{panic(err)}defersession.Close()session.SetMode(mgo.Mon

Go logging struct 实例化实用方法的 Goroutine 线程安全

我正在使用一个新的go服务,我有一个SetupLogger实用函数,它创建一个新的go-kit日志结构实例log.Logger。从在单独的go-routines中处理请求的代码调用此方法是否安全?packageutilsimport("fmt""github.com/go-kit/kit/log""io""os""path/filepath")//Iftheenvironment-specifieddirectoryforwritinglogfilesexists,opentheexistinglogfile//ifitalreadyexistsorcreatealogfileifno

multithreading - Golang 线程池调度程序的目的和顺序

我刚刚用go写完了一个简单的代理应用程序:代码从一个接口(interface)获取UDP数据包,加密数据,然后使用TCP将其发送到另一个接口(interface)。目前,我正在使用三个goroutines:一个用于接收数据,一个用于加密,一个用于发送数据。我刚刚开始尝试寻找提高代码效率和速度的方法。首先,我想为每个需要加密的数据包创建一个新的goroutine,但在阅读了以下两篇博文后,我明白这不是正确的做法:http://marcio.io/2015/07/handling-1-million-requests-per-minute-with-golang/http://nesv.g

http - 多线程Go for HTTP get

我在一个API中使用Go来获取我所在城市的公交车频率,但是当我尝试使HTTPGet访问许多URL时,我有点卡在了线程上。如果没有并发,程序需要超过16分钟才能完成1500个url调用以获取HTTP状态代码,我试图使用并发,但在阅读了很多帖子后我不明白goroutines是如何工作的......想法是制作一个函数并更改请求的数量,如下所示:gogetBusPostStatus(600,800)但我完全坚持...代码如下:packagemainimport("fmt""net/http""strconv""time")variint=0varconvStrstringvarmessage=

go - 在 Go 中读写纯二进制信息的最佳方式是什么?

我想为个人项目手动实现霍夫曼编码。我坚持的部分是如何存储编码。假设我的输入可以使用65位进行编码。我是否创建了一个包含9个字节的byteslice并将元素视为一个连续的内存块的类?或者有没有办法更直接地做我想做的事? 最佳答案 您可以为此使用位数组数据结构。看看这个https://godoc.org/github.com/golang-collections/go-datastructures/bitarray 关于go-在Go中读写纯二进制信息的最佳方式是什么?,我们在StackOve

Golang Gorilla Websocket 在 120 秒时停止接收信息

我目前正在尝试连接到CEX.IO比特币交易所的websocket,但不仅与CEX.IO有问题,与其他人也有问题。我的所有连接都在120秒左右下降,这让我觉得存在一些TTL问题。主包中的Process()goroutine最终只是挂起并等待来自readLoop的数据,而readLoop只是停止接收数据。我在代码中包含了一些只读APIkey,因此您可以根据需要进行测试。packagemainimport("fmt""bitbucket.org/tradedefender/cryptocurrency/exchange-connector/cexio""github.com/shopspri

go - pprof(对于 golang)不显示我的包的详细信息

我一直在尝试使用pprof分析我的go应用程序(evm-specification-miner),但输出并不是很有用:(pprof)top5108.59minsof109.29minstotal(99.36%)Dropped607nodes(cum=0.98mins)flatflat%sum%cumcum%107.83mins98.66%98.66%108.64mins99.40%[evm-specification-miner]0.36mins0.33%98.99%6mins5.49%net.dialIP0.30mins0.28%99.27%4.18mins3.83%net.list

json - 作为发送到 Amazon SNS 的嵌套信息的一部分,在消息响应中获取多个反斜杠 - 我是否遗漏了什么?

我在下面编写的用于将信息发送到AmazonSNS的golang客户端脚本收到以下消息响应:消息响应:{\"recipient\":\"test20@test.com\",\"template\":\"welcome_email_v1\",\"type\":\"email\",\"source\":\"noreply@sender.co\",\"user\":{\"first_name\":\"\\\"tester\\\"\",\"last_name\":\"\\\"M\\\"\"}}"我不太确定作为first_name和last_name的嵌套user散列的一部分的多个反斜杠是否作为以

go - 测试在后台线程中运行的函数的结果

我有一个WebSocket服务器,我正在尝试正确测试它的一些功能。我有以下场景:我正在接受WebSocket连接并调用一个channelregisterConn在新连接上通知typehubstruct.这是中心:typehubstruct{clientsmap[client]boolregisterConnchanclient//someotherfieldsbelow...}//Thisfunctionrunsinitsownthreadforeverfunc(h*hub)run(){for{select{//Aclientconnectsonthischannelcaseclien