freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

物聯(lián)網(wǎng)倉(cāng)儲(chǔ)系統(tǒng)-資料下載頁(yè)

2025-01-09 21:52本頁(yè)面
  

【正文】 for IPC_INFO ? (Linuxspecific) */ ? }。 ? int semop ( int semid, struct sembuf *opsptr, unsigned nops)。 ? 功能:就是對(duì)信號(hào)量集合中的信號(hào)量進(jìn)行 PV操作 ? 參數(shù): semid, 指定要操作的集合 ? opsptr, ? struct sembuf{ ? unsigned short sem_num。 /* semaphore number */ ? short sem_op。 /* semaphore operation */ ? short sem_flg。 /* operation flags */ ? }。 ? 成員分析: ? sem_num 表示要操作的信號(hào)量的編號(hào) ? sem_op, 表示進(jìn)行 P或者 V操作, 比如: sem_op = 10(+10) ? sem_op = 10(10) ? sem_op = 0, 那么 semop函數(shù)會(huì)等到該信號(hào)量的值變?yōu)?0為止。 ? sem_flg, 0(最常用的 ),表示 semop函數(shù)的操作是阻塞的,直到成功為止。 ? IPC_NOWAIT,表示 semop函數(shù)的操作是非阻塞的,如果操作沒(méi)有成功,立刻返回。 ? SEM_UNDO(不常用),設(shè)置只對(duì)當(dāng)前進(jìn)程有效,不會(huì)保存到系統(tǒng)的信號(hào)量集合中。 ? nops, 調(diào)用一次 semop要操作的信號(hào)量的個(gè)數(shù) ? 返回值:成功 0, 失敗 1 linux 管道、消息隊(duì)列、共享內(nèi)存的對(duì)比 ? 管道的優(yōu)點(diǎn)是不需要加鎖,缺點(diǎn)是默認(rèn)緩沖區(qū)太小,只有 4K,同時(shí)只適合父子進(jìn)程間通信,而且一個(gè)管道只適合單向通信,如果要雙向通信需要建立兩個(gè)。而且不適合多個(gè)子進(jìn)程,因?yàn)橄?huì)亂,它的發(fā)送接收機(jī)制是用read/write這種適用流的,缺點(diǎn)是數(shù)據(jù)本身沒(méi)有邊界,需要應(yīng)用程序自己解釋,而一般消息大多是一個(gè)固定長(zhǎng)的消息頭,和一個(gè)變長(zhǎng)的消息體,一個(gè)子進(jìn)程從管道 read到消息頭后,消息體可能被別的子進(jìn)程接收到 linux 管道、消息隊(duì)列、共享內(nèi)存的對(duì)比 ? 消息隊(duì)列也不要加鎖,默認(rèn)緩沖區(qū)和單消息上限都要大一些,在我的 suse10上是 64K,它并不局限于父子進(jìn)程間通信,只要一個(gè)相同的 key,就可以讓不同的進(jìn)程定位到同一個(gè)消息隊(duì)列上,它也可以用來(lái)給雙向通信,不過(guò)稍微加個(gè)標(biāo)識(shí),可以通過(guò)消息中的 type進(jìn)行區(qū)分,比如一個(gè)任務(wù)分派進(jìn)程,創(chuàng)建了若干個(gè)執(zhí)行子進(jìn)程,不管是父進(jìn)程發(fā)送分派任務(wù)的消息,還是子進(jìn)程發(fā)送任務(wù)執(zhí)行的消息,都將 type設(shè)置為目標(biāo)進(jìn)程的 pid,因?yàn)?msgrcv可以指定只接收消息類型為 type的消息,這樣就實(shí)現(xiàn)了子進(jìn)程只接收自己的任務(wù),父進(jìn)程只接收任務(wù)結(jié)果 linux 管道、消息隊(duì)列、共享內(nèi)存的對(duì)比 ? 共享內(nèi)存的幾乎可以認(rèn)為沒(méi)有上限,它也是不局限與父子進(jìn)程,采用跟消息隊(duì)列類似的定位方式,因?yàn)閮?nèi)存是共享的,不存在任何單向的限制,最大的問(wèn)題就是需要應(yīng)用程序自己做互斥,有如下幾種方案 ? 1 只適用兩個(gè)進(jìn)程共享,在內(nèi)存中放一個(gè)標(biāo)志位,一定要聲明為 volatile,大家基于標(biāo)志位來(lái)互斥,例如為 0時(shí)第一個(gè)可以寫(xiě),第二個(gè)就等待,為 1時(shí)第一個(gè)等待,第二個(gè)可以寫(xiě) /讀 ? 2 也只適用兩個(gè)進(jìn)程,是用信號(hào),大家等待不同的信號(hào),第一個(gè)寫(xiě)完了發(fā)送信號(hào) 2,等待信號(hào) 1,第二個(gè)等待信號(hào) 2,收到后讀取 /寫(xiě)入完,發(fā)送信號(hào) 1,它不是用更多進(jìn)程是因?yàn)殡m然父進(jìn)程可以向不同子進(jìn)程分別發(fā)送信號(hào),但是子進(jìn)程收到信號(hào)會(huì)同時(shí)訪問(wèn)共享內(nèi)存,產(chǎn)生不同子進(jìn)程間的競(jìng)態(tài)條件,如果用多塊共享內(nèi)存,又存在子進(jìn)程發(fā)送結(jié)果通知信號(hào)時(shí),父進(jìn)程收到信號(hào)后,不知道是誰(shuí)發(fā)送,也意味著不知道該訪問(wèn)哪塊共享內(nèi)存,即使子進(jìn)程發(fā)送不同的結(jié)果通知信號(hào),因?yàn)榈却盘?hào)的一定是阻塞的,如果某個(gè)子進(jìn)程意外終止,父進(jìn)程將永遠(yuǎn)阻塞下去,而不能超時(shí)處理 ? 3 采用信號(hào)量或者 msgctl自己的加鎖、解鎖功能,不過(guò)后者只適用于 linux linux 管道、消息隊(duì)列、共享內(nèi)存的對(duì)比 ? 總結(jié): ? 管道是最弱的,只適合有限場(chǎng)景; ? 消息隊(duì)列能適合大部分場(chǎng)景,缺點(diǎn)是默認(rèn)緩沖也比較小,不過(guò)這個(gè)可以調(diào)整,前提是你有管理員權(quán)限; ? 共享內(nèi)存是最強(qiáng)大的,只是要做互斥 遇見(jiàn)問(wèn)題 ? ? 采用的條件變量的形式(注意加鎖) ? ? 注意初始化時(shí)不能多次初始化的。 ? : ? ipcs m 查看當(dāng)前系統(tǒng)上的共享內(nèi)存 ? ipcrm m shmid 刪除共享內(nèi)存標(biāo)識(shí)符 shmid的共享內(nèi)存 ? 在程序中可以使用 system(“ ipcs m”),注意 system不可傳參數(shù) ? ipcs q 查看當(dāng)前系統(tǒng)上存在的消息隊(duì)列對(duì)象 ? ipcrm q msgid 刪除當(dāng)前系統(tǒng)上指定的消息隊(duì)列對(duì)象 ? ipcs s 查看當(dāng)前系統(tǒng)上存在信號(hào)量集合 ? ipcrm s semid 刪除當(dāng)前系統(tǒng)上指定 id的信號(hào)量集合 總結(jié) ? 物聯(lián)網(wǎng)倉(cāng)儲(chǔ)系統(tǒng)基本上郎闊了嵌入式的大部分知識(shí),通過(guò)自己編寫(xiě)對(duì)一個(gè)實(shí)例化的項(xiàng)目對(duì)嵌入式有了比較清晰地認(rèn)識(shí)。對(duì)自己的認(rèn)知和以后的學(xué)習(xí)起到了引領(lǐng)作用。感謝各位老師在這段時(shí)間的教導(dǎo),同時(shí)感謝各位同學(xué),這段時(shí)間相處的非常愉快。 演講完畢,謝謝觀看!
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1