Entropie anthropique

Aller au contenu | Aller au menu | Aller à la recherche

mardi 30 septembre 2008

Appels blocants dans une librairie C pour Ruby

Il est généralement admis qu'en Ruby on ne peut pas faire d'appels bloquants sur une ressource externe à cause des green thread. Pourtant, j'ai remarqué que les threads Ruby se comportaient très bien quand un autre attendaient sur un appel à "Kernel.select" (polling sur des sockets). Je ne sais pas trop par quelle magie cela fonctionne, mais ça ouvre une porte à s'affranchir du problème que j'avais lors des premières versions de Férus. Je vais donc pouvoir faire un thread OS qui s'occupe de copier la donnée dans une socket qui sera lue avec select par Ruby. C'est très hacké, mais ça devrait marcher avec relativement peu d'overhead (une ou deux copies). Je vais tacher de faire une proof of concept et puis après qui sait? une lib? le soucis d'une librairie c'est qu'il faut s'occuper à la place de l'utilisateur de tous les évènements qui peuvent arriver sur une socket. Bref, c'est bizarre, mais ça pourrait me débloquer, et donc permettre d'éviter de griller du processeur pour rien (ce qui rendait les jeu en Férus encore plus lent que Ruby ne peut le permettre).

lundi 22 septembre 2008

Retour à la vie-rtuelle

Et bien il en a fallu peu pour que je reste coincé dans la vie réelle en vacances. Maintenant elles sont finies et je repars pour une sans doute dernière année de cours, dont cinq mois de projet de fin d'études.

Du coup je vais commencer à chercher ce stage ingénieur, si possible entre de l'informatique de réseau, du signal, de la radiofréquences ou des fibres optiques. Pour l'instant mes préférences sont à peu près équilibrées. On verra, avec les premiers cours de chacunes de ces matières, lesquelles m'inspirent le plus. Car pour l'instant je me sens trop curieux. Tout bêtement tout me plaît tant que j'ai l'impression de conduire un projet si possible utile et qui compte un peu comme un défi.

En attendant, j'ai remis les mains dans Férus car j'ai trouvé un "hack" pour faire des attentes bloquantes sans bloquer tous les green threads de Ruby (indice: il faut rajouter une socket et faire du polling avec select dessus), ainsi que démarré un client pour les mesures de Grenouille. Il faudra que je mette à jour l'API ruby pour le site VDM et puis voilà tout pour mes projets geek. Ensuite, je me suis mis un peu à la photo et je dois continuer mes travaux de vocalisation des fables de Lafontaine.