Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
cdy816
Mars
提交
ea101e3a
Mars
项目概览
cdy816
/
Mars
通知
3
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Mars
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ea101e3a
编写于
8月 28, 2020
作者:
cdy816
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加Linux下,指定线程使用指定CPU
上级
a2848781
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
46 addition
and
2 deletion
+46
-2
Common/Cdy.Tag.Common/Common/ThreadHelper.cs
Common/Cdy.Tag.Common/Common/ThreadHelper.cs
+46
-2
未找到文件。
Common/Cdy.Tag.Common/Common/ThreadHelper.cs
浏览文件 @
ea101e3a
...
...
@@ -61,7 +61,7 @@ namespace Cdy.Tag
}
else
if
(
RuntimeInformation
.
IsOSPlatform
(
OSPlatform
.
Linux
))
{
SetThreadAffinityMaskLinux
(
MaskFromIds
(
cpus
));
}
else
{
...
...
@@ -81,7 +81,9 @@ namespace Cdy.Tag
}
else
if
(
RuntimeInformation
.
IsOSPlatform
(
OSPlatform
.
Linux
))
{
//ulong re = 0;
//LinuxNative.pthread_getaffinity_np(LinuxNative.pthread_self(), ref re);
//return (uint)re;
}
else
{
...
...
@@ -115,6 +117,16 @@ namespace Cdy.Tag
//return SetThreadAffinityMask(Win32Native.GetCurrentThread(), mask);
}
/// <summary>
///
/// </summary>
/// <param name="mask"></param>
public
static
void
SetThreadAffinityMaskLinux
(
ulong
mask
)
{
LinuxNative
.
pthread_setaffinity_np
(
LinuxNative
.
pthread_self
(),
8
,
ref
mask
);
}
/// <summary>
/// Masks from ids.
/// </summary>
...
...
@@ -166,6 +178,38 @@ namespace Cdy.Tag
#
endregion
...
Interfaces
...
}
public
static
class
LinuxNative
{
private
const
string
pthread
=
"libpthread.so.0"
;
/// <summary>
///
/// </summary>
/// <param name="threadHandel"></param>
/// <param name="cpusize"></param>
/// <param name="cpuset"></param>
/// <returns></returns>
[
DllImport
(
pthread
,
CharSet
=
CharSet
.
Auto
,
SetLastError
=
true
)]
public
static
extern
int
pthread_setaffinity_np
(
IntPtr
threadHandel
,
int
cpusize
,
ref
UInt64
cpuset
);
/// <summary>
///
/// </summary>
/// <param name="threadHandel"></param>
/// <param name="cpuset"></param>
/// <returns></returns>
[
DllImport
(
pthread
,
CharSet
=
CharSet
.
Auto
,
SetLastError
=
true
)]
public
static
extern
int
pthread_getaffinity_np
(
IntPtr
threadHandel
,
ref
UInt64
cpuset
);
/// <summary>
///
/// </summary>
/// <returns></returns>
[
DllImport
(
pthread
,
CharSet
=
CharSet
.
Auto
,
SetLastError
=
true
)]
public
static
extern
IntPtr
pthread_self
();
}
/// <summary>
/// Win32Native Class
/// </summary>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录