or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
使用Go channel的正確姿勢 - Gaston Chiu
tags:
COSCUP2020
入門
TR214
歡迎來到 https://hackmd.io/@coscup/2020 共筆
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →點擊本頁上方的 開始用 Markdown 一起寫筆記!
手機版請點選上方 按鈕展開議程列表。
Channel 101
base on CSP (Communication Sequential Process)
channel 可能是 Circular Queue + Mutex Lock ?
Blocking
make(chan int) == make(chan int, 0)
Non-blocking
make(chan int, n)
select
withdefault
channel 帶有 buffer 可以提高吞吐量,而提升效能
Go scheduler
G:
M:
P:
Dive into channel implementation
src/runtime/chan.go
Recvq
,Sendq
是去紀錄要等待存取的 send/receive requests as linked listgoready
,gopark
select
的順序是無意義的,其實作是隨機去拿在case
中的 channel講者提到可以寫如下的程式去提高被選到的機率