我在线程1中收到各种各样的数据,然后通过消息通知、共享内存的方式传给线程2。现在遇到的问题是,数据类型有很多种(几十种甚至上百种),怎么样统一将不同的数据类型用统一的方式传输给线程2?我的解决办法不太好,就是在线程1中为这些数据分配内存,然后将其强制转换成LPVOID,用一个结构体存储这个指针,再在该结构体中附加类型信息,将这个结构体通过消息的wPARAM参数传给线程2,线程2再根据类型信息还原该数据,处理过后将其删除。现在的问题是,线程2如何根据该类型信息(int型或字符串型表示)来处理该数据?一个大的switch/case结构能够处理,但明显不够灵活,扩展也不方便。MFC的方式是动态创建,但我不能修改这几十个数据类型(类),为其加上动态创建的特性。(这些数据类型所在的库是第三方的,即使我有这个耐心一个一个的加动态创建特性,也无法办到)哪位高手有类似的经验?
如果都是基本类型,用variant_t就可以,当然还有你定的类型码
谢谢回复。首先,我所指的数据类型不仅仅是基本类型,大多数是自定义的类,VARIANT好象不支持。其次,即使VARIANT支持自定义类,其内存效率也不高,因为其本质上是UNION。VARIANT是为了统一传输参数而设计的,而不是为了传输数据。
没错,这样可以部分解决问题,但每一次分配的UNION内存都比较大。除了这种浪费内存的作法,还有没有更高级的做法?(再排除动态创建)
线程2从容器中拿出来使用,不过对全局容器的操作时注意进行同步。
这样就无需对数据类型进行LPVOID的转换了。
能不能说得详细点?全局的容器?你是指vector?list? 接收线程如何知道数据类型?