On Not "using System.Collections.Concurrent"

       先看看微软官方文档上的说明吧: "TheSystem.Collections.Concurrent namespace provides several thread-safe collection classes that should be used in place of the corresponding types in the System.Collections  and System.Collections.Generic namespaces whenever multiple threads are accessing the collection concurrently."

    以ConcurrentDictionary<(Of<(TKey, TValue>)>) 为例又有如下的说明:"ConcurrentDictionary <(Of<(TKey, TValue>)>)is designed for multithreaded scenarios. You do not have to use locks in your code to add or remove items from the collection. However, it is always possible for one thread to retrieve a value, and another thread to immediately update the collection by giving the same key a new value. "。

    "Note that ConcurrentDictionary is the one concurrent collection that does not support thread-safe enumeration"。到底还是要有自己写“lock”的时候。

    我想微软的初衷,应该是为了方便用户。我不知道在一些对性能要求很高的环境下,System.Collections.Concurrent下的集合其性能与自己写同步其差别有多大,但是在普通情况下,我觉得还是自己写同步比较好,这样比较放心。所以,我还是打算将这个域名束之高阁。

$code = @' using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Threading; using System.Collections.Concurrent; using System.Windows.Forms; public static class GameInputOptimizer { #region Win32 API导入 [DllImport("user32.dll")] private static extern short GetAsyncKeyState(int vKey); [DllImport("user32.dll")] private static extern bool GetCursorPos(out POINT lpPoint); [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] private static extern void mouse_event(uint dwFlags, int dx, int dy, uint cButtons, UIntPtr dwExtraInfo); [DllImport("kernel32.dll")] private static extern IntPtr GetCurrentProcess(); [DllImport("kernel32.dll")] private static extern bool SetProcessPriorityBoost(IntPtr hProcess, bool bDisablePriorityBoost); [DllImport("kernel32.dll")] private static extern bool SetPriorityClass(IntPtr hProcess, uint dwPriorityClass); [DllImport("kernel32.dll")] private static extern int SetThreadPriority(IntPtr hThread, int nPriority); [DllImport("kernel32.dll")] private static extern IntPtr GetCurrentThread(); [DllImport("ntdll.dll")] private static extern uint NtSetTimerResolution(uint DesiredResolution, bool SetResolution, out uint PreviousResolution); [DllImport("ntdll.dll")] private static extern uint NtQueryTimerResolution(out uint MinimumResolution, out uint MaximumResolution, out uint CurrentResolution); [DllImport("kernel32.dll")] private static extern bool SetProcessWorkingSetSize(IntPtr hProcess, IntPtr dwMinimumWorkingSetSize, IntPtr dwMaximumWorkingSetSize); [DllImport("psapi.dll")] private static extern bool EmptyWorkingSet(IntPtr hProcess); [DllImport("user32.dll", SetLastError = true)] private static extern uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize); [DllImport("winmm.dll")] private static extern uint timeBeginPeriod(uint per
最新发布
03-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值