Hi guys this question might seem weird, but I'm using the Haptek People Putty player for my C# application and I've seen people say in the forums that it doesn't work well with a multicore processor. My application runs well on my Core 2 Duo laptop but it lags a lot when I try running it on a Quad Core desktop. I was thinking of investigating this for myself and in that case, I would have to force my application to run on a single core. Is that possible in C#? Thanks!
相关问题
- Sorting 3 numbers without branching [closed]
- Graphics.DrawImage() - Throws out of memory except
- Why am I getting UnauthorizedAccessException on th
- 求获取指定qq 资料的方法
- How to know full paths to DLL's from .csproj f
Not really possible IN C#. Well, no way i know off. You need interop, with that it works.
Are you using multiple threads? If not - hm - sorry - not a lot you can do. Standard UI applications are not using multiple cores anyway.
Basically, applications not using Threads (Work items use threads) are inherently single core anyway.
If the application is single-threaded, it will not take advantage of multiple cores. However, it is possible that the kernel can bump the thread around between cores. I doubt that this is the cause of your performance problems.
If you would like to tie the thread down to a single core (not sure if this can be guaranteed), you might want to check out the
System.Diagnostics.ProcessThread.ProcessorAffinity
property, although I have never used it myself.Where a
Process
variableproc
holds the process you care about (Process.GetCurrentProcess()
for the running Process, obtaining it fromGetProcesses()
orGetProcessesByName()
etc. for another process. Then:IdealProcessor is a zero-based identity of a single core. ProcessorAffinity is a bitmask, so 1 allows core zero, 2 allows core one, 3 allows cores zero and one, 4 allows core two, and so on.
I would test this thoroughly. Chances are very strong that this will actually damage your performance, in reducing the ability to make use of different cores, which is after-all generally an advantage.