双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

C#怎样让不同的线程运行在不同的CPU上来提高运行效率?

花开花折 花开花折 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

1:假如单独调用FindShapeModel()方法执行所需要时间为100mms ;那我用多线程调用FindShapeModel()\FindShapeModel1()所用的时间应该也是100ms 左右,但实际测试发现会大于100*2ms ,偶尔有100ms左右的情况出现。
2:求解原因,代码中有设置让线程运行在不同的CPU上,但根据实没时间,好像还是运行在同一个CPU上。

3:FindShapeModel()\FindShapeModel1()方法内容一样的,只是名称不一样。
4:硬件配置 intel core(TM)-i7-7700 CPU



private void FindShapeModel()
{
Thread.BeginThreadAffinity();

IntPtr handle = GetCurrentThread();
int id = Thread.CurrentThread.ManagedThreadId;
uint id1 = GetCurrentThreadId();

UIntPtr rtn = SetThreadAffinityMask(handle, new UIntPtr(0x000F));
uint rtn1 = GetLastError();
QueryPerformanceCounter(ref time[15]);
isFinish[0]= FindShapeModel(hv_ModelID,ho_Image);

Thread.EndThreadAffinity();

}

private void FindShapeModel1()
{
Thread.BeginThreadAffinity();

IntPtr handle = GetCurrentThread();
int id = Thread.CurrentThread.ManagedThreadId;
uint id1 = GetCurrentThreadId();

UIntPtr rtn = SetThreadAffinityMask(handle, new UIntPtr(0x0001));
uint rtn1 = GetLastError();
FindShapeModel1(hv_ModelID, ho_Image1);

Thread.EndThreadAffinity();

}



MyThread[0] = new Thread(new ThreadStart(FindShapeModel));
MyThread[0].Start();

MyThread[1] = new Thread(new ThreadStart(FindShapeModel1));
MyThread[1].Start();




...全文

相关推荐

评论 16
收藏 已收藏
分享
返回顶部
花开花折
C# 111,129 成员 642,540 内容