# 4/4 一對一題問 ## 其他 1. 在 [Linux 核心設計(2021): 第 1 週作業解說](https://www.youtube.com/watch?v=a8GwXtrUc6Q&t=2486s) `1:41:46` 中提到的 Git commit message 檢查(自然語言實作) 2. 設計實驗實驗常用到的工具。 ## 第一週作業 ### lab0 1. 作業要求 **在 qtest 中實作 coroutine,並提供新的命令 web,提供 web 伺服器功能,注意: web 伺服器運作過程中,qtest 仍可接受其他命令** 中的 coroutine 概念。 下面是我之前加入 longjmp/setjmp 的作法。 ```c= static bool do_web(int argc, char *argv[]) { ... // int i = 0; // for (; i < FORK_COUNT; i++) { pid_server = fork(); if (pid_server == 0) { // child while (1) { connfd = accept(listenfd, (SA *) &clientaddr, &clientlen); process(connfd, &clientaddr); close(connfd); } } else if (pid_server > 0) { // parent printf("child pid is %d\n", pid_server); longjmp(jmpbuffer, 1); } else { perror("fork"); } // } while (1) { connfd = accept(listenfd, (SA *) &clientaddr, &clientlen); process(connfd, &clientaddr); close(connfd); } return 0; } ``` ```c= int main(int argc, char *argv[]) { ... setjmp(jmpbuffer); ok = ok && run_console(infile_name); ... } ``` ### quiz1 1. 雙底線在前的變數命名有什麼特殊含義? ```c= typedef struct __node { int value; struct __node *next; } node_t; ``` ## 第二週作業 ### quize2 1. 如何決定程式碼要放在 `.c` 或 `.h`。 ## 第三週作業 ## 第四週作業 1. 延伸問題中的 **嘗試使用 C11 Atomics 改寫上述程式碼,使其有更好的 scalability** 的 scalability 指的是什麼?
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up