Try   HackMD

第 14, 15, 16 週課堂問答

期末專題

JIT

  • mmap system call
  • mprotect system call

macOS -> https://keith.github.io/xcode-man-pages/pthread_jit_write_protect_np.3.html

simrupt

Week15

測驗題

SPSC queue
producer 主要操作是 enqueue()
consumer 主要操作是 dequeue()
spinlock
[ T: 2 ]
producer 7 cycles/op
consumer: 7 cycles/op
[ T: 3 ]
producer 8 cycles/op
consumer: 16 cycles/op
[ T: 4 ]
producer 7 cycles/op
consumer: 21 cycles/op
[ T: 5 ]
consumer: 37 cycles/op
producer 9 cycles/op

如何設計實驗,來驗證「lock-free: 強調以系統的觀點來看,只要執行足夠長的時間,至少會有一個執行緒會有進展 (progress)」這個屬性?
real-time (WCET): https://en.wikipedia.org/wiki/Worst-case_execution_time

consumer 裡頭的 assert((old_value + 1) == value) 在檢查什麼條件?
producer 總是產生嚴格遞增的數列
==> 如何驗證 producer,如果要加入 assert 來驗證,怎麼做?
==> 如何驗證 queue

我在想 consumer 會不會有 race condition 的可能? 因為 self->tail.w 會同時被多個執行緒修改,且不是用 atomic 的方式做?

yanjiew1

加入 Thread Sanitizer
-fsanitize=thread

機率

quiz16
ABA problem
drop 的定義
slots[]

如何避免編譯器在最佳化的時候,把沒有顯式分支的程式加上分支?