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

109 bài viết.
1591 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
155 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 3 năm trước
155 46
White
149 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 2 năm trước
149 39
White
104 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 2 năm trước
104 17
Bài viết liên quan
White
9 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 2 năm trước
9 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


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