Не могу понять детали использования общей памяти - PullRequest
0 голосов
/ 22 ноября 2018

Я новичок в C ++, и я не понимаю, что происходит в этой части программы:

    class FasterRCNN {
private:
    int m_base_model;
    std::string m_key_mutex = "";
    HANDLE  m_mutex = INVALID_HANDLE_VALUE;
    std::string m_key_shmem = "";
    HANDLE  m_shmem = INVALID_HANDLE_VALUE;
    DWORD m_size = 0;
    char* m_buffer = nullptr;
    std::vector<std::string> m_class_map;
public:
    void Create(int base_model, std::string model_path, std::string classfile, DWORD size = 10000, float filter_threshold = 0.4F) {
        m_base_model = base_model;
        m_key_shmem = this->GetKey() + "_shmem";
        m_key_mutex = this->GetKey() + "_mutex";
        m_size = size;

        m_mutex = ::CreateMutexA(nullptr, FALSE, m_key_mutex.c_str());
        m_shmem = ::CreateFileMappingA(INVALID_HANDLE_VALUE, nullptr, PAGE_READWRITE, 0, m_size, m_key_shmem.c_str());
        m_buffer = (char*)::MapViewOfFile(m_shmem, FILE_MAP_ALL_ACCESS, 0, 0, m_size);
        m_buffer[0] = 0;

Я не могу понять, как m_buffer получает его значения в последний разлиний.Я знаю, что:

  • GetKey предназначен для получения миллисекундной части времени
  • m_buffer [0] работает как флаг:

    // 0 = загрузить модель

    // 1 = путь отправки изображения

    // 2 = обнаружить

    // 3 = получить

    //9 = сигнал завершения

Могу ли я понять это с помощью окна потоков?

...