使用usleep來暫停一會(huì)。
一般用于線程循環(huán)的時(shí)候切換當(dāng)前線程,讓出CPU給其它線程,不會(huì)導(dǎo)致死鎖也能充分利用CPU。
但在高性能程序中,usleep不可用,其會(huì)讓你的線程在不必要的時(shí)候被切換出去。最明顯的例子是做網(wǎng)絡(luò)數(shù)據(jù)接收。
如果你的程序在收數(shù)據(jù)等到一個(gè)pending的時(shí)候退出接收等待下個(gè)事件,如果這個(gè)時(shí)候你使用usleep,那么線程就可能被切換出去10ms,導(dǎo)致你本來應(yīng)該及時(shí)處理的數(shù)據(jù)沒有及時(shí)處理而導(dǎo)致程序的吞吐量降低。
這個(gè)時(shí)候使用epoll或select來替換。
所以usleep使用的時(shí)候一定要注意;另外最好用nanosleep來替換。