最简单的办事是,调用线程传递一个指针进去接收数据,你的接口内部进行动态内存开辟.然后让线程去是释放这部分内存.
在开辟内存的时候,有时候会碰到大小比预计的要小,这个时候你可以把当前开辟的内存直接进行扩容(c++支持这个操作)
或者你构造一个数据链表,每个节点内存储数据和数据大小,每当节点存不下数据了,你在创建一个新的节点并分配内存,依次类推.所分配的内存空间由实际使用的线程释放.
还有其他的方式就不举例了.
场景需求:接口类A是单例类,多线程都会调用类的接口处理数据,需要把处理后的数据返回给外部调用者,如果平时按照非单例的做法,我会在A类内预申请内存,把结果存到成员变量的指针中,然后将指针返回给外部调用者使用,这样就得到了处理后的数据。但是在单例类中,每调用一次接口就会把类A的内部成员变量的值改变,此时如果外部调用者没有及时拷贝数据就会覆盖掉原来的数据(多线程时有可能外部调用者在拷贝数据时另一个线程就调用接口,因为接口在完成上一次调用后就释放内部的锁了)。如果需要外部调用者传递一个指针进去,而结果又是变长的数据内存,这种情况怎么预先知道需要多少内存大小呢?
验证码登录>
验证码登录>
自动登录 | 忘记密码?
密码登录>
自动登录