Goroutine sẽ chết nếu main program chết
TIL
763
Go
40
golang
40
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

119 bài viết.
2033 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
182 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 5 năm trước
182 46
White
157 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 4 năm trước
157 39
White
118 19
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 4 năm trước
118 19
Bài viết liên quan
White
16 1
Crawl dữ liệu Crawl là một vấn đề hay gặp trong quá trình làm software. Ví dụ lấy tin tức, tin giảm giá, vé xem phim... là những dạng của crawl. Mộ...
Thach Le viết hơn 4 năm trước
16 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
119 bài viết.
2033 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á!