handle hfile,
dword flprotect,
dword dwmaximumsizehigh,
dword dwmaximumsizelow,
lpctstr lpname
);hfile: 共享檔案控制代碼,不建立共享檔案,為invalid_handle_value
flprotect: 保護選項,如果指定了hfile,則對檔案也有同樣的要求
page_readonly: 唯讀
page_readwrite:可讀可寫
page_writecopy:不支援
dwmaximumsizehigh: 共享記憶體大小高32位
dwmaximumsizelow:共享記憶體大小低32位
lpname:共享記憶體名
mapviewoffile:
lpvoid mapviewoffile(
dword dwdesiredaccess,
dword dwfileoffsethigh,
dword dwfileoffsetlow,
dword dwnumberofbytestomap
);
dwdesiredaccess: 訪問許可權
file_map_all_access: 讀、寫
file_map_read:讀
file_map_write:寫
dwfileoffsethigh: 訪問偏移量高32位
dwfileoffsetlow:訪問偏移量低32位
dwnumberofbytestomap: 共享檔案位元組數,設為0,則為整個檔案。
伺服器端
void sharedmemory()
// 釋放記憶體
unmapviewoffile(pcmap);
}
客戶端:
void testsharedmemory()
0, 0, 0);
cout << pcmap << endl;
// 通知主程式釋放
pcmap[0] = '1';
// 釋放記憶體
unmapviewoffile(pcmap);
}
除錯->視窗->記憶體
伺服器端:
void filesharedmemory()
null,
page_readwrite,
0,0,
text("mysharedmemory")
);0, 0, 0);
pcmap[0] = '0';
while (pcmap[0] == '0')
// 釋放記憶體
unmapviewoffile(pcmap);
closehandle(hfile);
}
客戶端不變。
執行緒範圍內共享資料
我們可以先用所學知識來寫乙個 public class threadscopesharedata start static class a static class b 如果光像上面這樣寫的話,那毫無疑問,肯定是有問題的,如下圖所示並沒有實現執行緒共享 此時就實現執行緒內共享資料了 public c...
RHCE 建立系統內共享目錄
建立乙個共享目錄 home admins 特性如下 home admins目錄的組所有權是adminuseradminuser組的成員對目錄有讀寫和執行的許可權。除此之外的其他所有使用者沒有任何許可權 root使用者能夠訪問系統中的所有檔案和目錄 在 home admins目錄中建立的檔案,其組所有...
執行緒範圍內共享資料
假設現在有個公共的變數data,有不同的執行緒都可以去操作它,如果在不同的執行緒對data操作完成後再去取這個data,那麼肯定會出現執行緒間的資料混亂問題,因為a執行緒在取data資料前可能b執行緒又對其進行了修改,下面寫個程式來說明一下該問題 public class threadscopesh...