다음을 통해 공유


메시지 전달 함수

업데이트: 2011년 3월

비동기 에이전트 라이브러리에서는 구성 요소 간에 메시지를 전달할 수 있는 몇 가지 함수를 제공합니다.

이러한 메시지 전달 함수는 다양한 메시지 블록 형식과 함께 사용됩니다. 동시성 런타임에 정의된 메시지 블록 형식에 대한 자세한 내용은 비동기 메시지 블록을 참조하십시오.

단원

이 항목에서는 다음과 같은 메시지 전달 함수에 대해 설명합니다.

  • send 및 asend

  • receive 및 try_receive

  • 예제

send 및 asend

Concurrency::send 함수는 지정된 대상에 동기적으로 메시지를 보내고 Concurrency::asend 함수는 지정된 대상에 비동기적으로 메시지를 보냅니다. sendasend 함수 둘 다 대상에서 메시지를 최종적으로 수락할지 아니면 거부할지를 나타낼 때까지 기다립니다.

send 함수는 대상에서 메시지를 수락하거나 거부할 때까지 기다린 후 반환합니다. send 함수는 메시지가 배달되었으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. send 함수는 동기적으로 동작합니다. 따라서 send 함수는 대상에서 메시지를 받을 때까지 기다린 후 반환합니다.

반대로 asend 함수는 대상에서 메시지를 수락하거나 거부할 때까지 기다리지 않고 반환합니다. 대신 asend 함수는 대상에서 메시지를 수락하고 최종적으로 배달될 예정이면 true를 반환합니다. 그렇지 않으면 asend에서는 false를 반환하여 대상에서 메시지를 거부했거나, 메시지를 받을지 여부에 대한 결정을 연기했음을 나타냅니다.

[맨 위로 이동]

receive 및 try_receive

Concurrency::receiveConcurrency::try_receive 함수는 지정된 소스에서 데이터를 읽습니다. receive 함수는 데이터를 사용할 수 있을 때까지 기다리지만 try_receive 함수는 즉시 반환합니다.

데이터가 있어야 계속할 수 있는 경우 receive 함수를 사용합니다. 현재 컨텍스트를 차단해야 하거나, 데이터가 없어도 계속할 수 있는 경우에는 try_receive 함수를 사용합니다.

[맨 위로 이동]

예제

send, asendreceive 함수를 사용하는 예제를 보려면 다음 항목을 참조하십시오.

[맨 위로 이동]

참고 항목

참조

send 함수

asend 함수

receive 함수

try_receive 함수

개념

비동기 에이전트 라이브러리

비동기 메시지 블록

변경 기록

날짜

변경 내용

이유

2011년 3월

send 함수와 asend 함수 간 차이점을 명확히 설명했습니다.

고객 의견

2010년 8월

예제에 대한 링크를 추가했습니다.

향상된 기능 관련 정보