关于线程中的TList 将数据不断地加入到一个线程中的TLIST队列中,线程处理TLIST中的数据比添加的时间要慢,导致TLIST队列会越来越大,内存也不断增加,在不想掉失队列中的数据的情况下有什么办法解决这个问题? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把你的TList最好使用TThreadList放到一个主线程里面控制数据的添加与调用处理线程,再写一个独立线程来处理TList内的数据但不处理TList,数据量大的话可以考虑使用线程池 多个线程来处理这个List,写一个专门的过程来负责分发任务,看哪个线程相对空闲就发往哪个线程的队列 算法问题,如果你非常在意内存空间,最好不要用TList,而是直接操作内存(链表);如果在意访问的速度,用动态数组(其实也可以直接开辟内存,用地址偏移,和数组下标访问的速度是一样的).还有如果你字段类型为固定大小类型,则非常好办,如果是字符串等不固定类型,则要麻烦些 要根本解决还是要提高处理 TList 的速度,也许里面算法可以改进呢?挂起不是办法。既然要缓存,那就是读数据速度不能由你控制,挂起就起不到缓存作用了。反之,要是你本身能控制读数据的速度,何不由此线程来控制:处理一条再读一条。那就不需要缓存了。总之,这里的逻辑好像有点乱。 线程是如何从list中取数据处理的?如果是类似:process(List[0]);List.Delete(0);这样的话那么不慢就有鬼了。每次delete就相当于复制整个list一遍,在list不断增加的情况下只会越来越慢。 请教:TreeView如何点击节点展开其所有子节点?和点“+”一个效果 短信平台 如何集成到 三方的mis系统里 有没有好的解决方案 ? 如何向SQLSERVER 插入数值型? 各位是怎么给软件做帮助系统的! ******推荐!不错的一个数据库源码****** 我的机器变慢了,查不出病毒,郁闷ING。。 一报表打印问题 我想问一下,在Delphi5中装 RX控件出现的问题 ? Ado显示问题,高分请教 各位高手:如何解决程序运行结束后在Windows系统任务栏上留下空白标题栏按钮的问题? 如何在两个程序间,实现的对象引用的传递或共享。 怎样填充字符串,使它看起来一样长
还有如果你字段类型为固定大小类型,则非常好办,如果是字符串等不固定类型,则要麻烦些
process(List[0]);
List.Delete(0);
这样的话那么不慢就有鬼了。每次delete就相当于复制整个list一遍,在list不断增加的情况下只会越来越慢。