我在 Windows 7 64 位中使用 Visual Studio 2012。
我需要使用并发数据结构,因为我将使用线程。我发现微软有几个http://msdn.microsoft.com/en-us/library/dd504906.aspx#unordered_map
一般来说,我必须处理
将数据接收到队列中......准备就绪时处理......继续接收数据。
我将使用 microsoft 提供的 concurrent_unordered_map 类来拥有一个存储名为 TouchInfo 的类的 cuncurrent 映射。每个 TouchInfo 对象都有一个唯一的 ID(无符号长整数),这是我用来检索需要更新的对象的 ID。
同时,我需要将 TouchInfo 插入并发队列中......一旦队列达到一个数字,我就处理队列......(不同的线程)
1.我的第一个问题是我是否需要unsigned long的特殊哈希函数...... unsigned long是系统从Windows 7中的多点触控系统(WinUser.h)中给出的ID(dwID)因为我有无法控制 ID,我想确保我的哈希函数得到优化。
typedef struct tagTOUCHINPUT {
LONG x;
LONG y;
HANDLE hSource;
DWORD dwID;
DWORD dwFlags;
DWORD dwMask;
DWORD dwTime;
ULONG_PTR dwExtraInfo;
DWORD cxContact;
DWORD cyContact;
} TOUCHINPUT, *PTOUCHINPUT;
也许,我不必做任何事情,只需声明
我在网上看到有人使用 Boost 来创建 Hash...
完全欢迎对我的设计进行任何输入和更改...
非常欢迎我的问题的答案!
谢谢!