呵呵,我就是想问的这个,有多个数据公用不知道能用结构体,主线程和辅线程需要用到共同的对象,那对象定义是不是要在这个结构体里?
追答结构体可以定义任何的东西,但是在结构体里面定义对象还是定义指针你要根据自己的情况来看,一般定义指针比较多,比如你在主线程里面先操作一个对象,初始化啊什么的,然后将指针传递给工作线程进行后台时间比较长的工作。如果你只要一个参数那直接把对象指针传递过去就行了。
只是你要注意的是这个传递过去的lpParameter指针所指向的对象不能是局部变量,否则主线程的函数返回之后结构体对象就被删除了,这时候工作线程中的指针就变成了无效的指针,对无效指针的访问会导致Access Violation错误,默认Windows会弹个错误将程序强行结束。
如果你不想声明全局变量也不想为主线程所在的类(假定你是面向对象的编程)添加成员变量,可以用new在堆上创建一个对象,这样主线程函数返回的时候堆上的对象是不会删除的。只是你要记得在工作线程退出的时候要用delete把这个lpParameter给删除,否则就导致内存泄漏,内存泄漏少你不会察觉,泄漏多了你的程序的内存占用就会很厉害。
还有个比较偷懒的方法就是直接传this指针过去就行了。