Queue插入的时候报错的处理方法:源数组长度不足。请检查 srcIndex 和长度以及数组的下限
2014-10-22 12:45
429 查看
与多线程并发操作Queue有关!
1)如果你用的是System.Collection.Queue集合,插入队列时
2)如果你用的是System.Collections.Generic.Queue<T>
追问
回答
1)如果你用的是System.Collection.Queue集合,插入队列时
不知道这里第二段代码中为何需要对于这个object进行lock而不是对q进行lock?
回答
lock(obj){…}后面两个大括号直接的代码称为临界区。当一个线程执行位于代码的临界区时,另一个线程会阻止在临界区外,不会进入该临界区,一直到该lock(obj)锁定的象obj被释放。 第二代码片段中,当然可以这样写 lock(q) { } 用q(队列)作为lock的锁定对象。但这样做有个缺点:一旦q被lock锁定,其他对q进行只读操作的线程也无法存取这个q了。 使用了最简单对象object synObj = new object()做为lock锁定对象,这样,在多线程环境中:允许一个线程对队列进行修改;同时允许其他线程读取队列。
相关文章推荐
- Queue插入的时候报错:源数组长度不足。请检查 srcIndex 和长度以及数组的下限
- C#源数组长度不足。请检查 srcIndex 和长度以及数组的下限
- System.ArgumentException: 目标数组的长度不够。请检查 destIndex 和长度以及数组的下限
- 小记:目标数组的长度不够。请检查 destIndex 和长度以及数组的下限。
- 安装Oracle的时候报SWAP空间不足的处理方法
- z-index使用以及失效的处理方法
- 插入的U盘读写时候出现Read-only file system的处理方法
- 记录个人数组、字符串自己常忘记的方法,以及ES常用处理方式
- 数组和字典的writeToFile方法——在项目开发中处理网络数据的时候,可以把请求获得的网络数据保存为plist文件,这样更方便开发
- 自己在学习Mybits的时候理解的一点sql注入的知识,以及处理的方法!
- 【Unity&对象数组】如何创建一个长度不确定的对象数组以及使用方法&墙壁单元方块对象数组
- java.lang.ArrayIndexOutOfBoundsException(数组越界)处理方法
- 关于对字符串、数组处理的常见问题与方法,如获取带有空格字符串长度,数组长度等。getline(),sprintf()使用。
- Java ArrayList add(index,element) 方法插入元素到数组指定位置
- 根据服务器端返回的字符数组,展示字符串标签,需要涉及字符串长度处理以及字符串换行,字符串不够一行自动跳到第二行的逻辑
- 『C++ Primer学习笔记』Chapter 3——string对象、vector对象以及数组的不同处理方法
- UITextFiled & UITextView 控制输入长度、中文处理以及UITextView 的placeHolder 的一种实现方法
- Java ArrayList add(index,element) 方法插入元素到数组指定位置
- "服务器存储空间不足,无法处理此命令"问题解决方法
- 处理拖动的时候,窗口出现重影和其他窗口残余控件的方法