선점형 스케쥴링(Preemptive Scheduling)과 협조적 스케줄링(Cooperative Scheduling) 비교

출처 선점형 스케줄링 모델과 협조적 스케줄링 모델은 여러 작업이 프로세서나 하드웨어 스레드 같은 컴퓨팅 리소스를 공유하도록 해주는 두 가지 일반적인 방법이다. 선점형 스케줄링 및 협조적 스케줄링 선점형 스케줄링은 지정된 시간 동안 모든 작업이 번갈아 가면서 컴퓨팅 리소스에 대한 독점적 액세스를...
더 읽기

Linux - PATH에 대해서

출처 명령 검색 PATH의 확인 방법 $ echo $PATH로 확인 가능하다. $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin 경로는 :로 구분되고, /usr/local/bin, /usr/bin, /bin, /usr/sbin, /sbin, /usr/local/sbin 6개가 검색 명령 경로로 설정되어 있다. 명령 실행 파일의 저장 위치 확인 방법 $ which ls로...
더 읽기

C# - 단일 실행 파일로 Ubuntu 18.04 에서 실행하기

출처 콘솔 앱을 만든다 Program.cs using System; using System.Threading; namespace SingleFileConsole { class Program { static void Main(string[] args) { while (true) { Console.WriteLine("Hello World!"); Thread.Sleep(1000); } } } } 애플리케이션을 발행한다 리눅스 플랫폼으로 지정해서 싱글 파일로 발행한다. dotnet publish...
더 읽기

Rust - 편리한 매크로 소개

출처 Rust의 표준 매크로는 하나의 파일에 모두 정리하고 있다. 문서에서 볼 수 있다. https://doc.rust-lang.org/src/std/macros.rs.html 일부 매크로는 컴파일러 매직이기도 하고, 보고있는 것만으로도 꽤 재미있다. Rust의 편리한 매크로 목록 compile_error! panic!은 런타임 오류를 내지만,이것은 컴파일 시에 에러를 낼 수 있는 매크로이다. 컴파일시...
더 읽기

Rust - bytes Read, Write

출처 Read 와 Write let mut bytes: &[u8] = &[1, 2, 3, 4, 5, 6]; let mut buf = [0;3]; bytes.read_exact(&mut buf).unwrap(); println!("read: {:?}, rest: {:?}", buf, bytes); 결과 read: [1, 2, 3], rest: [4, 5, 6] let bytes: Vec<u8>...
더 읽기

C# - async-await에서 lock 사용하기

출처 C#에서 비동기 메소드에서는 lock을 쓸 수 없다. 이 글은 그래도 lock을 사용 하고 싶을 때를 위한 것이다. lock이 필요한 경우를 예를 들면 아래처럼 더블 체크 락킹을 하고 싶을 때이다. // /이것이 여러 스레드에서 비동기에게 불리는 private static async ValueTask...
더 읽기