V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
a7a2
V2EX  ›  问与答

到底 go 语言程序设计要不要考虑多线程问题,另求 go 在 windows 创建多线程代码例子

  •  
  •   a7a2 · 2018-07-06 14:47:19 +08:00 · 2163 次点击
    这是一个创建于 2093 天前的主题,其中的信息可能已经有所发展或是发生改变。

    到底 go 语言程序设计要不要考虑多线程问题,另求 go 在 windows 创建多线程代码例子。

    因为多线程设计可以少考虑很多问题,让程序设计没有那么复杂,尤其是兼容单 cpu 单核问题上。

    5 条回复    2018-07-20 09:29:38 +08:00
    gamexg
        1
    gamexg  
       2018-07-06 15:22:38 +08:00 via Android
    需要考虑,建议看 go 内存模型 。
    jmone
        2
    jmone  
       2018-07-07 00:34:25 +08:00
    尼玛,就这水平还定能顶替 2-3 个 php
    a7a2
        3
    a7a2  
    OP
       2018-07-07 01:02:10 +08:00
    @jmone 那你回答一个所以然来。特别是代码例子
    a7a2
        4
    a7a2  
    OP
       2018-07-07 02:05:17 +08:00
    @jmone 那话确实有点夸张,其实我主要意思是我可以一个人做完 2-3 个 php 人的工作,不是说我的效率跟等于 2-3 个 phper
    a7a3
        5
    a7a3  
       2018-07-20 09:29:38 +08:00
    package main

    import (
    "C"
    "fmt"
    "syscall"
    )

    func ThreadProc(p uintptr) uintptr {
    fmt.Println("hello a7a2")
    return 0
    }

    func main() {
    modkernel32 := syscall.MustLoadDLL("kernel32.dll")
    procCreateThread := modkernel32.MustFindProc("CreateThread")
    r1, _, _ := procCreateThread.Call(0, 0, syscall.NewCallback(ThreadProc), 0, 0, 0)
    h := syscall.Handle(r1)
    syscall.WaitForSingleObject(h, syscall.INFINITE)
    syscall.CloseHandle(h)
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2796 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 15:02 · PVG 23:02 · LAX 08:02 · JFK 11:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.