一个fork短码的扩展版本
生活随笔
收集整理的這篇文章主要介紹了
一个fork短码的扩展版本
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原本代碼:
鏈接
int skip = !!fork() + 2*(!!fork());
for (uint32_t i=skip;i!=INT_MAX;i+=4)
{
} 這個是多進程加速循環的代碼,寫的的確很精妙。(雖然for循環的條件有問題。)
但我認為還可以改進:不用兩個連續的感嘆號,一個就夠了。沒有檢查返回值。
改進:
下面是我的改進版本。定義了兩個函數,雖然warning連篇但是能正確運行。
warning的原因主要是用了隱式聲明-Wimplicit-function-declaration和默認類型描述符-Wimplicit-int,只是偶爾geek一下而已,平時不會這么寫的。
extern inline _Noreturn perrorNexit(const char *p)
{ perror(p), exit(-1); }static inline fork_(register i)
{register pid = fork();return ~pid?!pid<<i:perrorNexit("fork_: ");
}main() {return printf("i'm No.%d\n", fork_(0) | fork_(1) | fork_(2));
} - NEW feature:
- 增加返回值檢查
- 允許方便地把進程數擴展到8、16等
運行結果:
轉載于:https://www.cnblogs.com/tjua/p/7745857.html
總結
以上是生活随笔為你收集整理的一个fork短码的扩展版本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 买个吹风机要花多少钱?
- 下一篇: 高冷个性签名男生简短