I/O send/recv bloquent process

I/O send/recv bloquent process - C - Programmation

Marsh Posté le 18-07-2007 à 12:40:51    

Le context: J'ai une application multi-thread, chaque thread a une connexion sur un(e?) socket. Actuellement j'utilisais read/write pour travailler sur chaque connexion, mais je vais passer tres prochainement a send/recv pour avor un meilleur controle des donnees envoyees.
Le probleme: j'ai actuellement des actions bloquantes read/write pour mon process (je n'utilise pas encore select(), mais ca va venir aussi) et du coup ca empeche mes autres threads de faire leur tache.
Il me semblait qu'il existait des I/O read/write thread-independent, mais j'arrive pas a remettre la main sur ces fonctions.
 
Pour resume ce que je voudrais a terme :
- select() pour gerer le timeout
- send/recv qui ne bloquent pas mon process
 
Parce que meme si j'ai un select, j'aurais quand meme a chaque entree dans send/recv un blocage des autres threads du process non ?

Reply

Marsh Posté le 18-07-2007 à 12:40:51   

Reply

Marsh Posté le 18-07-2007 à 14:43:39    

t'as un problème read/write (équivalent à recv/send à un flag près) ne bloque que le thread actuel. tu as un problème ailleurs.

Reply

Marsh Posté le 18-07-2007 à 15:05:05    

Ta phrase est vraie dans tous les cas ou c'est seulement avec un flag specifique specifie a l'initialisation de la socket ?

Reply

Marsh Posté le 18-07-2007 à 15:18:54    

si tu utilises 0 c'est pareil. On a très rarement besoin d'utiliser les flags (OS-dépendant, le plus commun étant pour faire de l'OOB), d'où le fait que read/write sont tout à fait satisfaisants

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed