码迷,mamicode.com
首页 > 编程语言 > 详细

LibUsbDotNet中的USB通知事件是不是线程安全?

时间:2014-07-26 01:16:16      阅读:742      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   io   2014   

使用LibUsbDotNet做了一个项目,测试的时候测试人员做了一个用例就是快速插拔USB。因为程序中对USB设备的打开和关闭都是在USB通知事件中做的,所以如果USB插拔通知事件不是线程安全的,那么在多线程中关闭和打开设备的顺序就无法保证,因此做了一个小实验来测试是否是线程安全的。

首先需要添加引用:LibUsbDotNet.dll

using LibUsbDotNet;
using LibUsbDotNet.DeviceNotify;

class Program
    {
        //USB插拔通知事件
        static IDeviceNotifier DevNotifier;
        static int n = 0;
       
        static void Main(string[] args)
        {
            DevNotifier = DeviceNotifier.OpenDeviceNotifier();
            DevNotifier.Enabled = true;
            DevNotifier.OnDeviceNotify += DevNotifier_OnDeviceNotify;

            while (!Console.KeyAvailable)
                Application.DoEvents();
        }

        private static void DevNotifier_OnDeviceNotify(object sender, DeviceNotifyEventArgs e)
        {
            n++;
            for(int i=0;i <0xffff;i++)
            {
                for (int j = 0; j < n; j++)
                    Console.Write("\t");
                
                Console.WriteLine(i.ToString("X4") + " " + n.ToString());
            }
        }
    }

运行如下:

bubuko.com,布布扣

控制台输出被覆盖掉了。不过能很明显的看见,当快速插拔USB的时候,是1、2、3、4按顺序执行的。也就是说当多个USB插拔事件发生的时候,事件是线程排队的。因此是线程安全的。

LibUsbDotNet中的USB通知事件是不是线程安全?,布布扣,bubuko.com

LibUsbDotNet中的USB通知事件是不是线程安全?

标签:style   blog   http   color   使用   os   io   2014   

原文地址:http://www.cnblogs.com/scm-forever/p/3868785.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!