Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 데비안
- GIT
- 스프링부트핵심가이드
- network configuration
- 처음 만나는 AI 수학 with Python
- 네트워크 설정
- d
- 선형대수
- /etc/network/interfaces
- 친절한SQL튜닝
- 자바편
- Kernighan의 C언어 프로그래밍
- 스프링 시큐리티
- 코드로배우는스프링웹프로젝트
- 리눅스
- 코드로배우는스프링부트웹프로젝트
- 티스토리 쿠키 삭제
- iterator
- 알파회계
- 페이징
- 자료구조와함께배우는알고리즘입문
- resttemplate
- 서버설정
- 목록처리
- 처음 만나는 AI수학 with Python
- 구멍가게코딩단
- baeldung
- 이터레이터
- ㅒ
- 자료구조와 함께 배우는 알고리즘 입문
Archives
- Today
- Total
bright jazz music
GO - Goroutines 고루틴 기본 본문
package main
import (
"fmt"
"time"
)
// Goroutines 은 기본적으로 다른 함수와 동시에 실행시키는 함수이다.
//고루틴은 메인함수가 종료되면 끝난다.
func main() {
go sexyCount("hojun") //go를 넣어줌으로써 고루틴을 만든다. 호준은 오케아노스와 동시처리된다.
sexyCount("oceanus")
//만약 sexyCount("oceanus")에도 go를 붙이면 프로그램은 종료된다.
// 메인 함수가 작업을 마쳤기 때문이다.
//고루틴은 프로그램이 작동하는 동안만 유효한 것이다. 즉, 메인함수가 작동하는 동안만
//이 경우 메인함수는 첫 번째 고루틴을 실행하고 두 번째 고루틴을 실행한다.
//그러면 남아 있는 작업이 없기 때문에 끝이 나버린다.
//고루틴의 실행을 기다려주지 않는 것이다.
//그래서 메인함수가 끝나면 모든 고루틴도 끝이 나는 것이다.
//sexyCount("hojun")를 고루틴으로 만들었을 때 실행되었던 것은
//메인 함수가 실행해 1초씩 걸리는 oceanus를 카운팅 하고 있기 때문이다.
//만약 oceanus도 고루틴으로 만들고 그 밑에 time.Sleep(time.Second *5)라는
//코드를 붙인다면 고루틴은 5초간은 살아 있을 것이다.
// 5초가 지나면 메인함수는 종료될 것이고,
//"is sexy"는 0에서 4까지밖에 세지 못했을 것이다.
}
func sexyCount(person string) {
for i := 0; i < 10; i++ {
fmt.Println(person, "is sexy", i)
time.Sleep(time.Second)
}
}
'Language > Go' 카테고리의 다른 글
Go - URL checker (Goroutine + channel) (0) | 2021.02.21 |
---|---|
Go - channel 2 (for loop 사용) (0) | 2021.02.20 |
Go - URL Checker 하나 씩 순차적 (0) | 2021.02.19 |
Go - map 타입에 메소드 추가하기(Update, Delete) (0) | 2021.02.19 |
Go- map 타입에 메소드 추가하기(Add) (0) | 2021.02.19 |
Comments