> 백엔드 개발 > Golang > 동시 프로그래밍에 Golang 함수는 어떻게 사용됩니까?

동시 프로그래밍에 Golang 함수는 어떻게 사용됩니까?

PHPz
풀어 주다: 2024-04-12 09:36:02
원래의
1095명이 탐색했습니다.

Go 언어는 경량 스레드를 동시에 실행할 수 있는 Goroutine을 통해 동시 프로그래밍을 구현합니다. 고루틴은 go 키워드를 사용하여 생성할 수 있으며 파이프(chan 유형)를 통해 통신할 수 있습니다. 실제 사례에서는 문자열을 병렬로 검색하고 각 고루틴 검색 결과를 받기 위한 파이프라인을 생성하여 검색 속도를 향상시킵니다.

동시 프로그래밍에 Golang 함수는 어떻게 사용됩니까?

동시 프로그래밍에 Go 기능 사용하기

Go 언어는 동시 프로그래밍에 사용할 수 있는 Goroutine이라는 경량 스레드를 제공합니다. 고루틴은 동시에 실행되어 애플리케이션의 성능과 응답성을 향상시킬 수 있습니다.

고루틴을 만들려면 go 키워드와 실행할 함수를 차례로 사용하세요. go 关键字,后面跟着要执行的函数:

go func() {
    fmt.Println("这是一个 Goroutine!")
}
로그인 후 복사

Goroutine 也可以接收和发送值。使用 chan

// 创建管道
ch := make(chan string)

// Goroutine 发送值
go func() {
    ch <- "消息 1"
    ch <- "消息 2"
}

// 主程序接收值
for msg := range ch {
    fmt.Println(msg)
}
로그인 후 복사

고루틴은 값을 주고받을 수도 있습니다. chan 유형을 사용하여 고루틴 간의 통신을 허용하는 파이프라인을 생성합니다:

// 文件列表
files := []string{"file1.txt", "file2.txt", "file3.txt"}

// 创建管道
result := make(chan string)

// Goroutine 并行查找字符串
for _, file := range files {
    go func(file string) {
        data, err := ioutil.ReadFile(file)
        if err != nil {
            result <- file + ": " + err.Error()
            return
        }

        result <- file + ": " + strconv.Itoa(strings.Count(string(data), "foo"))
    }(file)
}

// 主程序打印结果
for result := range result {
    fmt.Println(result)
}
로그인 후 복사
실용적인 예: 문자열에 대한 병렬 검색

우리가 찾아야 할 파일 목록이 있다고 가정합니다. 끈. 고루틴을 사용하여 이 작업을 병렬로 수행하여 조회 속도를 더 빠르게 할 수 있습니다.

rrreee

이 예를 사용하면 각 파일에서 "foo"라는 문자열의 발생을 병렬로 찾을 수 있어 단일 스레드 조회보다 더 빠른 성능을 얻을 수 있습니다. 🎜

위 내용은 동시 프로그래밍에 Golang 함수는 어떻게 사용됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿