[C#/COMMON] Process 클래스 : ProcessAffinity 속성을 사용해 프로세스를 특정 CPU에서만 실행하기
C#/Common 2019. 11. 25. 14:52728x90
반응형
728x170
[TestProject 프로젝트]
▶ Program.cs
using System;
using System.Diagnostics;
namespace TestProject
{
/// <summary>
/// 프로그램
/// </summary>
class Program
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 프로세스 구하기 - GetProcess()
/// <summary>
/// 프로세스 구하기
/// </summary>
/// <returns>프로세스</returns>
private static Process GetProcess()
{
Process process = new Process();
process.EnableRaisingEvents = false;
process.StartInfo.FileName = "TestWorker.exe";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
return process;
}
#endregion
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
private static void Main()
{
Process process = GetProcess();
Console.WriteLine("작업자 프로세스를 시작하려면 아무 키나 눌러 주시기 바랍니다.");
process = GetProcess();
Console.ReadKey(false);
process.Start();
Console.WriteLine("작업자 프로세스를 시작했습니다.");
process.ProcessorAffinity = (IntPtr)0x88; // 4번, 8번 CPU에 할당한다.
Console.WriteLine("작업자 프로세스를 시작했습니다.");
Console.WriteLine("작업자 프로세스를 종료 하려면 아무 키나 눌러 주시기 바랍니다.");
Console.ReadKey(false);
process.Kill();
Console.WriteLine("작업자 프로세스를 제거했습니다.");
}
#endregion
}
}
[TestWorker 프로젝트]
▶ Program.cs
using System;
using System.Threading;
namespace TestWorker
{
/// <summary>
/// 프로그램
/// </summary>
class Program
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 난수기
/// </summary>
private static Random _random = new Random();
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 스레드 처리하기 - ProcessThread()
/// <summary>
/// 스레드 처리하기
/// </summary>
public static void ProcessThread()
{
long number = 0;
while(true)
{
number += _random.Next(100, 1000);
if(number > 1000000)
{
number = 0;
}
}
}
#endregion
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
private static void Main()
{
int processorCount = Environment.ProcessorCount;
for(int i = 0; i < processorCount; i++)
{
Thread thread = new Thread(() => { ProcessThread(); });
thread.Start();
}
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] clrver.exe 프로그램 (0) | 2019.11.28 |
---|---|
[C#/COMMON] corflags.exe 프로그램 (0) | 2019.11.28 |
[C#/COMMON] peverify.exe 프로그램 (0) | 2019.11.28 |
[C#/COMMON] sn.exe 프로그램 : 서명 파일 생성하기 (0) | 2019.11.28 |
[C#/COMMON] perfview.exe 프로그램 (0) | 2019.11.28 |
[C#/COMMON] IEnumerable<T> 인터페이스 : 변환 함수를 사용해 열거 가능형 변환하기 (0) | 2019.11.24 |
[C#/COMMON] IEnumerable<T> 인터페이스 : 변환 함수를 사용해 열거 가능형 변환하기 (0) | 2019.11.24 |
[C#/COMMON] Lazy<T> 클래스 : 변환 함수를 사용해 지연 객체 변환하기 (0) | 2019.11.24 |
[C#/COMMON] Lazy<T> 클래스 : 변환 함수를 사용해 지연 객체 변환하기 (0) | 2019.11.24 |
[C#/COMMON] 변환 함수를 사용해 객체 변환하기 (0) | 2019.11.24 |
댓글을 달아 주세요