| 
					阅读:2000回复:19
				 自旋锁和队列在通讯效率方面的讨论
					在高频通讯的情况下,NDIS的效率就显得很重要了,
 希望大家讨论一下: 自旋锁和队列两种处理方式哪一种会效率更高, 如果哪位哥们做过机顶盒,拿出来和大家交流一下 | |
| 
 | 
| 沙发#发布于:2002-12-09 09:34 
					看来得再仔细看看DDK了。
 谢谢!!!!!! 给分------------------------------------------ | |
| 
 | 
| 板凳#发布于:2002-12-09 09:30 
					看一下ddk里面关于自旋锁的内容				 | |
| 
 | 
| 地板#发布于:2002-12-09 09:28 可能我的意思没有完全表达清楚, 在你的第二种情况下才应该加锁!!!!!!!!!!!!!!!!! | |
| 
 | 
| 地下室#发布于:2002-12-09 09:25 
					对于那些你在receive里面分配的packet、buffer这些数据加锁没有任何意义,				 | |
| 
 | 
| 5楼#发布于:2002-12-09 09:18 
					ptreceive有可能会被重入的,若你在该函数里没有使用全局变量(包括全局结构里的变量)和静态变量,也没有访问全局的资源,则不需要加锁,否则就必须要加锁。				 | |
| 6楼#发布于:2002-12-09 09:13 
					可能是我的概念有问题:
 我说的队列方式就是你所采用的方式。 发包的过程比较简单,所以我就来一个处理一个,收包要考虑很多问题,我是用的一个队列,我觉得用那种方式要根据你的情况来定,都差不多的, 我说的自旋锁,是指在驱动接口函数中,例如PASSTHRU中的PrReceive, 在该函数内部直接处理数据,这时对处理的数据加锁, 可能是多余的? | |
| 
 | 
| 7楼#发布于:2002-12-08 19:29 直接用自旋锁对数据加锁 数据不在队列里面不会有同时访问的问题为什么要加锁?: | |
| 
 | 
| 8楼#发布于:2002-12-08 10:53 
					可能我的意思没有完全表达清楚,
 我是说在处理数据时的两种方式, 1. 在接收到数据时,直接用自旋锁对数据加锁,对数据处理过后再释放锁, 对数据的处理是在系统调用的进程内部,我称之为自旋锁方式, 2. 在接收到数据时,将数据加入到一个队列中,在驱动中设一个全局量, 计算队列中的包数,另外建立一个线程对数据处理,我称之为队列方式 这两种方式必然会有差别,我觉得2应该是效率比较高,但内存危险比较高? 所以希望大家讨论一下!!!!!!!!!! | |
| 
 | 
| 9楼#发布于:2002-12-07 12:25 
					自旋锁是为了避免争用资源的问题的,如果这个数组的访问不会有这种情况,你完全可以不加的
 发包的过程比较简单,所以我就来一个处理一个,收包要考虑很多问题,我是用的一个队列,我觉得用那种方式要根据你的情况来定,都差不多的, | |
| 
 | 
| 10楼#发布于:2002-12-07 12:22 
					哦,呵呵我可能把两个问题放在一起说了:)
 遍历那个我是问锁内耗时的,发包效率那个我是问是该当时就处理包(比如加密)呢还是先缓冲起来压后处理。 | |
| 11楼#发布于:2002-12-07 12:16 
					你在哪里查的链表??不在收发包的过程中遍历不会影响你的收发包的效率的,				 | |
| 
 | 
| 12楼#发布于:2002-12-07 12:00 
					256 x 16,是个数组,但每个元素都可以是一个链表头。
 不过我使用了一种提速方法,所以空表项不会被搜索。 | |
| 13楼#发布于:2002-12-07 11:37 
					你这个遍历没有什么影响吧?链表多大?				 | |
| 
 | 
| 14楼#发布于:2002-12-07 11:25 
					在 NAT 中,每个地址映射都是有生存期的,时间一到,它就得让出它占用的资源(地址、端口),所以要定期遍历映射数据结构对影射生存期进行“减寿”操作。				 | |
| 15楼#发布于:2002-12-07 10:33 
					你都要怎么样操作?这看你怎么设计你的遍历方式了,遍历以后还要怎么处理,还有,你为什么要遍历一次??				 | |
| 
 | 
| 16楼#发布于:2002-12-07 10:21 
					写进函数里它的遍历耗时也不会缩短啊				 | |
| 17楼#发布于:2002-12-07 10:13 
					你把这些操作分别写函数,在函数内部加锁,在其他的地方调用这些函数来操作链表				 | |
| 
 | 
| 18楼#发布于:2002-12-07 10:02 自旋锁和队列是两个东西吖,怎么比较? 对啊。 我现在想用自旋锁来同步链表的操作(LIST_ENTRY)(比如说遍历操作),可是只在数据被改变的时候加锁我觉得还是会出问题,但如果把整个遍历和 Update 操作都加锁的话,锁内耗时会不会太长了?因为看书上说这个时间不能太长! | |
| 19楼#发布于:2002-12-06 22:02 
					自旋锁和队列是两个东西吖,怎么比较?				 | |
| 
 | 
 
							
 
				 
				