728x90

비동기 3

SocketAsyncEventArgs

SocketAsyncEventArgs.NET의 비동기 소켓 프로그래밍에서 사용되는 클래스이다. 이 클래스는 네트워크 소켓 작업을 효율적으로 처리하기 위해 설계되었으며, 특히 높은 성능과 확장성을 요구하는 서버 응용 프로그램에서 유용하다.Socket 통신을 하기 때문에 Socket이고, 비동기로 작업ㅇ르 하기 때문에 Async이다. 작업을 완료하면 실행되는 완료 콜백 함수를 가질 수 있어 Event이고, Socket 클래스의 비동기 함수에 인수로 들어가기 때문에 Args라고 생각하면 된다.Socket 클래스의 함수 중 뒤에 Async가 붙는 함수들은 모두 아래의 형태로 되어 있다.public bool *** Async(SocketAsyncEventArgs e); SocketAsyncEventArgs를 활용..

언어/C# 2024.07.31

블로킹/논블로킹(Blocking/Non-Blocking)

블로킹/논블로킹 블로킹(Blocking, 타 작업 수행 차단) 특정 작업이 실행 요청을 받아서 실행하는 동안 다른 작업은 진행하지 못하고 대기하는 방식을 의미한다. 제어권이 호출된 함수에게 넘어가서 호출된 함수 내에서 작업이 모두 끝난 후 값이 리턴되고, 호출한 함수에게 다시 제어권이 넘어온다. 작업이 순차적으로 이루어지므로 작업 흐름을 쉽게 이해할 수 있다는 장점이 있다. 블로킹이 이루어지는 동안 하드웨어 리소스를 효율적으로 이용하지 못한다는 단점이 있고, 특히 블로킹이 일어나는 작업이 오래 걸리는 작업인 경우에 이러한 단점은 더욱 부각된다. 논블로킹(Non-Blocking, 타 작업 수행 허용) 특정 작업이 이미 수행중이여도, 그것과 상관없이 바로 다른 작업을 수행 시키는 방식을 의미한다. 제어권은 ..

Computer/CS 2024.03.12

동기/비동기

동기/비동기 동기(Synchronous, 동시에 발생) 동시에 일어난다는 의미이다. 즉, 요청과 그 결과가 동시에 일어난다는 약속을 의미한다. 요청을 하면, 시간이 얼마나 걸리든 상관없이 요청한 자리에서 결과가 주어져야 한다. 요청과 결과가 모두 한 자리에서 동시에 일어나게 된다. 여러 노드 사이의 작업 처리 단위를 동시에 맞추겠다는 의도를 포함하고 있다. 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 한다는 단점이 존재한다. 비동기(Asynchronous, 동시에 발생하지 않는) 동시에 일어나지 않음을 의미한다. 즉, 요청과 결과가 동시에 일어나지 않는다는 약속을 의미한다. 요청한 그 자리에서 결과가 주어지지 않는다 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 ..

Computer/CS 2024.03.12
728x90