Goroutine sẽ chết nếu main program chết
TIL
633
Go
39
golang
38
White

Huy Trần viết ngày 17/06/2016

Ý là chết ko kịp ngáp (defer) luôn

Nếu trong main program có chạy một hoặc nhiều goroutine, thì khi thằng main chết (exit), các goroutine cũng sẽ bị dọn sạch (exit luôn, mọi tài nguyên nó tạo ra sẽ đc OS cleanup luôn), và chết không kịp ngáp (không gọi defer luôn).

Ví dụ:

package main

import (
    "fmt"
    "time"
)

func main() {
    go func() {
        defer fmt.Println("goroutine ended")
        time.Sleep(2*time.Second)
    }()
    time.Sleep(1*time.Second)
    fmt.Println("main ending")
}

Chạy online: https://play.golang.org/p/5z6ezkr_SC

Chúng ta tạo ra một goroutine, chờ trong 2 giây sau đó sẽ kết thúc, khi kết thúc thì in ra dòng chữ goroutine ended nhờ lệnh defer.

Main program thì chờ trong 1 giây sau đó sẽ kết thúc.

Kết quả của đoạn chương trình trên sẽ là:

main ending

chứ không phải là

main ending
goroutine ended

Huy Tran 18-06-2016

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Huy Trần

115 bài viết.
1762 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
167 46
Tại sao phải viết blog kĩ thuật? Có rất nhiều bài viết trên mạng nói về vấn đề tại sao một lập trình viên nên thường xuyên viết các bài blog kĩ thu...
Huy Trần viết hơn 3 năm trước
167 46
White
151 39
(Ảnh) Tiếp tục sêri (Link) lần này, chúng ta sẽ cùng tìm hiểu và mô phỏng lại một chức năng mà mọi người đang bắt đầu sử dụng hằng ngày, đó là chứ...
Huy Trần viết hơn 2 năm trước
151 39
White
108 17
Phần 1: Tự truyện Tui và Toán đã từng là hai kẻ thù không đội trời chung trong suốt hơn mười lăm năm ròng rã. Ngay từ ánh nhìn đầu tiên đã ghét nh...
Huy Trần viết hơn 2 năm trước
108 17
Bài viết liên quan
White
10 2
Makefile thực hiện một số thao tác thường dùng trong Go Khi làm project Go mình thường tạo một file Makefile dạng này: Lưu ý nhớ thay thành tên m...
Huy Trần viết hơn 2 năm trước
10 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
115 bài viết.
1762 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!