2014-05-07 3 views
0

Quelle est la différence entre les modes de socket non bloquants et asynchrones que nous définissons en utilisant les appels ci-dessous.Quelle est la différence entre le socket non bloquant et le socket asynchrone

  1. Cas 1: int sockfd; // create_sock (sockfd);

    // init_sock (sockfd);

    fcntl (sockfd, F_SETFL, O_NONBLOCK);

  2. Cas n ° 2:

    int sockfd; // create_sock (sockfd);

    // init_sock (sockfd);

    int on = 1; Ioctl (sockfd, FIOASYNC, & on);

  3. Cas n ° 3:

    int sockfd;

    // create_sock (sockfd);

    // init_sock (sockfd);

    int on = 1; ioctl (sockfd, FIONBIO, & sur)

Quel sera le comportement de la prise dans tous les cas ci-dessus.

Merci,

+0

duplication possible de [asynchrone vs non bloquante] (http://stackoverflow.com/questions/2625493/asynchronous-vs-non-blocking) –

Répondre

1

« non-blocage » signifie que la fonction soit fait ou n'a pas fait quelque chose, et retourne un statut qui vous a dit que.

'Asynchrone' signifie que l'opération invoquée par la fonction continue à fonctionner après le retour de la fonction, et qu'elle vous informe de son achèvement ou de sa défaillance par d'autres moyens, par ex. un rappel ou un handle, vous pouvez interroger pour le statut.

+0

merci, pourriez-vous également expliquer le comportement des sockets dans les trois cas Je mentionne en question. – akure

+0

Les cas 1 et 3 sont non-bloquants, ce qui signifie que «O_NONBLOCK» et «FIONBIO» signifient que le cas 2 est asynchrone, ce que signifie «FIOASYNC». Je ne pense pas que tu avais vraiment besoin de moi pour te le dire. – EJP

Questions connexes