golang多核设置

单核执行如果for前面或者中间不延迟,主线程不会让出CPU,导致异步的线程无法执行,

从而无法设置flag的值,从而出现死循环

实例代码:

package main

import (
	"fmt"
	"runtime"
	_ "time"
)

var (
	flag = false
	str  string
)

func foo() {
	flag = true
	str = "setup complete!"
}

func main() {
	runtime.GOMAXPROCS(1)
	go foo()
	//time.Sleep(1 * time.Second)
	for {
		if flag {
			break
		}
	}
	fmt.Println(str)
}

解决办法:1、for中间或者前面加延迟    2、runtime.GOMAXPROCS(1)改成runtime.GOMAXPROCS(2)

时间: 2024-10-07 00:57:36

golang多核设置的相关文章

Emacs中Golang的设置

欲善其事,先利其器.下面记录一些使用Emacs24做golang开发中的一些有用设置,备忘用. 一,golang中的代码跳转 emacs24的go-mode中默认用godef-describe,godef-jump和godef-jump-other-window来做代码跳转,而godef-*这几个命令需要用到外部程序godef来寻找函数定义.安装步骤如下: 1,安装godef 1)设置GOPATH和GOBIN,将GOBIN设置为/usr/local/bin 2) go get github.co

golang mysql 设置最大连接数

本文介绍golang 中连接MySQL时,如何设置最大连接数. 文中例子连接MySQL用的package是github.com/go-sql-driver/mysql. 设置最大连接数的接口是 func (db *DB) SetMaxOpenConns(n int) 设置连接MySQL可以打开的最大连接数. 如果n <= 0,表示打开的连接数没有限制. 默认为0,也就是不限制连接数. 另一个与连接数相关的参数是MaxIdleConns,表示最大空闲连接数. 如果MaxIdleConns 大于0,

Ubuntu16.04下安装golang

一.通过apt-get安装 1.sudo apt-get install golang 2.设置GOPATH变量 GOPATH是扩展库的目录,Go先搜索标准库目录,然后搜索GOPATH库目录,所有的非标准库都放在GOPATH下. 以GOPATH为"/opt/go"目录为例子: a.把export GOPATH=/opt/go加入到~/.bashrc文件的最后. b.source ~/.bashrc 这样就加好了GOPATH. 注意:apt-get命令安装只能安装go1.6版本现在很多开

C/C++调用Golang 二

C/C++调用Golang 二 <C/C++调用Golang 一>简单介绍了C/C++调用Golang的方法步骤,只涉及一个简单的函数调用.本文总结具体项目中的使用场景,将介绍三种较复杂的调用方式:一,C++向golang传入复杂结构体:二,C++向golang传入回调函数,在golang中调用C++函数:三,C++调用golang函数,返回复杂的结构体. (本文后面涉及三个例子,省略了编译步骤,仅展示关键代码.具体操作步骤参考<C/C++调用Golang 一>) 一 C++向go

mac golang 环境搭建

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/46683645 转载请一定注明出处! 1,下载社区版本idea https://www.jetbrains.com/idea/download/ 2,下载插件 https://plugins.jetbrains.com/plugin/5047?pr=idea 直接安装jar. 3,创建golang工程 设置sdk目录: 输入工程名称: 完成进入工程项目: 设置工程属性:(这步很重

go 基础(一)

go安装 1.windows安装 下载:https://www.golangtc.com/download golang在设置windows环境变量的时候有点问题,喜欢在文件夹后面加\,设置完之后最好自己再改一遍. 编辑环境变量GOROOT,将D:\Go\改成D:\Go 编辑环境变量path,删掉;D:\Go\bin\,然后在最开头写上%GOROOT%\Go; 编辑环境变量GOPATH,设置项目路径 官网学习: https://tour.go-zh.org/welcome/1 开发工具:http

glide从入门到精通使用

介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题.Java有牛逼轰轰的Maven和Gradle. Golang亦有godep.govendor.glide.gvt.gopack等等,本文主要给大家介绍gilde. glide是Golang的包管理工具,是为了解决Golang依赖问题的. 安装 Golang环境设置 Golang 1.5版本后才采用vendor目录特性. //设置环境变量使用vendor目录 GO15VENDOREXPERIMENT=1 安装glide $

iis8是做什么的,iis8简介

IIS8将随WindowsServer8的beta版本发布.IIS8的新功能旨在将大规模Web服务器聚集起来.但是在众多功能中一个很好的效果在于怎样分拨更小的服务器甚至单独的服务器. IIS8的FTP登录限制和动态IP的限制 IIS8有一个理论:因为安全问题,微软IIS8一直都有野蛮的试验.他们不得不不断地思考新的并且更加积极主动的方法来保护他们的服务器产品的安全.所以,在IIS8帮助中,有两个新的IIS8安全特征为HTTP和FTP服务提供短期和长期IP地址阻塞.但是,没有人把IP阻塞作为任何一

[QT]加快qt编译:设置默认多核编译qt

使用环境:win7 + QT Creator 4.2.1 + QT5.8 + MinGW5.3.0 32bit 设置默认多核编译qt  来源:http://stackoverflow.com/questions/8860712/setting-default-make-options-for-qt-creator 单个项目设置多核编译:作者 学海方舟:加快QT工程编译速度:http://blog.csdn.net/favory/article/details/50061141 菜单栏->工具->