新聞中心
隨著linux操作系統(tǒng)的廣泛應(yīng)用,越來越多的軟件、應(yīng)用程序以及服務(wù)經(jīng)常由多個(gè)進(jìn)程并發(fā)執(zhí)行。 這些進(jìn)程之間存在緊密的協(xié)作和調(diào)度,而這種同步交互的工作也必須取得非常好的效果。 一種實(shí)現(xiàn)這種同步交互的重要方法是采用Linux系統(tǒng)信號(hào)量,這種信號(hào)量可以允許多個(gè)進(jìn)程同時(shí)獲得鎖,在同一時(shí)間段有效地進(jìn)行資源的爭(zhēng)搶。

創(chuàng)新互聯(lián)建站是專業(yè)的城區(qū)網(wǎng)站建設(shè)公司,城區(qū)接單;提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行城區(qū)網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
Linux信號(hào)量的用法很簡(jiǎn)單,它使用共享變量維護(hù)一個(gè)可以增減的值,這個(gè)變量表示可以擁有共享資源的進(jìn)程數(shù)。 任何想要獲得資源的進(jìn)程便可以嘗試去拿鎖,如果信號(hào)量對(duì)應(yīng)的值比較大,調(diào)用函數(shù)就會(huì)返回成功狀態(tài),否則就會(huì)阻塞該進(jìn)程。
下面是實(shí)現(xiàn)信號(hào)量鎖定的簡(jiǎn)單示例:
int sem_create(int sem_key)
{
int semid;
semid = semget(sem_key, 1, IPC_CREAT | 0666);
if(semid == -1)
{
return -1;
}
if(semctl(semid, 0, SETVAL, 1) == -1)
{
return -1;
}
return semid;
}
int sem_wait(int semid)
{
struct sembuf sem_b;
sem_b.sem_num = 0;
sem_b.sem_op = -1;
sem_b.sem_flg = SEM_UNDO;
return semop(semid, &sem_b, 1 );
}
int sem_signal(int semid)
{
struct sembuf sem_b;
sem_b.sem_num = 0;
sem_b.sem_op = 1;
sem_b.sem_flg = SEM_UNDO;
return semop(semid, &sem_b, 1 );
}
void main()
{
int semid;
semid = sem_create(12345);
sem_wait(semid);
// do something here
sem_signal(semid);
semctl(semid, IPC_RMID, 0);
}
從上面的示例中可以看出,采用信號(hào)量來進(jìn)行Linux系統(tǒng)的進(jìn)程同步是一種很好的方法,它可以用于解決多個(gè)進(jìn)程之間的資源訪問沖突問題,從而讓不同的進(jìn)程能夠有序的執(zhí)行任務(wù),而不會(huì)影響操作系統(tǒng)的整體性能。 另外,這種信號(hào)量技術(shù)可以支持系統(tǒng)對(duì)資源使用的完全控制,可以在多線程環(huán)境下運(yùn)行,也可以在多服務(wù)器之間進(jìn)行資源訪問請(qǐng)求及限制等。
成都服務(wù)器租用選創(chuàng)新互聯(lián),先試用再開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。物理服務(wù)器托管租用:四川成都、綿陽(yáng)、重慶、貴陽(yáng)機(jī)房服務(wù)器托管租用。
當(dāng)前題目:量Linux進(jìn)程:利用信號(hào)量進(jìn)行同步(linux進(jìn)程信號(hào))
路徑分享:http://m.5511xx.com/article/dhhpids.html


咨詢
建站咨詢
