boost共享記憶體的使用

2021-10-11 02:04:26 字數 2875 閱讀 1214

目錄

boos的安裝(windows)

2、解壓到本地

3、編譯boost

4、vs工程屬性配置

boost共享記憶體封裝

標頭檔案cpp檔案 例項

解壓後資料夾下有個bootstrap.bat指令碼檔案

①開啟cmd,進入解壓好的boost目錄,執行bootstrap.bat,此時會生成b2.exe

②在cmd中執行.\b2.exe,開始編譯,大約耗時10分鐘。b2.exe會根據電腦當前安裝的virtual studio版本,自動生成lib庫檔案,本人安裝的vs2013,所以生成的是vc120版本。

①新增標頭檔案路徑

②新增lib檔案路徑

注意是*\stage\lib,不是*\libs

到此安裝結束,boost可以正常使用了,boos相關開發基礎介紹詳見

本文只介紹我簡單封裝的乙個boost共享記憶體類

#pragma once

#include #include #include #include #include #include "string"

typedef unsigned char uchar;

using namespace std;

using namespace boost::interprocess;

class cmyboostsharedmemory

;

#include "myboostsharedmemory.h"

#include cmyboostsharedmemory::cmyboostsharedmemory()

cmyboostsharedmemory::~cmyboostsharedmemory()

int cmyboostsharedmemory::init(std::string strmemname, std::string strmutexname, int nsize)

named_mutex::remove(m_strmutexname.c_str());

m_nbuffersize = nsize + 1;//+1的標誌位,0表示無資料,1表示有資料

m_strmemname = strmemname;

m_strmutexname = strmutexname;

m_shmmanager = shared_memory_object(boost::interprocess::open_or_create, strmemname.c_str(), read_write);

m_mtx = new named_mutex(boost::interprocess::open_or_create, m_strmutexname.c_str());

m_mtx->unlock();

m_shmmanager.truncate(m_nbuffersize);

memset(m_region.get_address(), 0, m_region.get_size());

m_bisinit = true;

return 0;

}int cmyboostsharedmemory::release()

return 1;

}int cmyboostsharedmemory::read(uchar* udata, int nsize, bool biswait)

char bz[1];

int ret = 0;

while (true)

else

std::this_thread::sleep_for(std::chrono::milliseconds(5));

} }

return ret;

}int cmyboostsharedmemory::write(uchar* udata, int nsize)

m_mtx->lock();

memset(m_region.get_address(), 1, 1);//標誌位置1

memcpy((char*)m_region.get_address()+1, udata, nsize);

m_mtx->unlock();

return 0;

}

int nsize = 1024;

cmyboostsharedmemory sm;

char addr[256] = ;

char mtx[256] = ;

sprintf_s(addr, "addr_name", 1);

sprintf_s(mtx, "mtx_name", 1);

sm.init(addr, mtx, 1024);

char msg = "hello world";

sm.write(msg,strlen(msg));

char buff[1024] = ;

s.read(buff,1024);

printf(buff);

共享記憶體的使用

http download1.csdn.net down3 20070529 29183222619.chttp download1.csdn.net down3 20070529 29183246962.chttp download1.csdn.net down3 20070529 2918324...

共享記憶體的使用

共享記憶體mmap使用 date tue apr 8 14 53 43 cst 2014 include extern c using namespace std define sem file sem lock int main int argc,char argv 開啟訊號量 int count...

boost 共享陣列

1 shared array與shared ptr很相似,只不過其實專門提供對陣列的包裝。但是經過測試,其實shared ptr也可以提供對陣列的包裝,而且不複雜。2 特點 1 共享陣列必須通過動態分配的陣列的位址來初始化 2 共享陣列的行為類似於共享指標,關鍵不同在於共享陣列在析構時,預設使用de...