Appel de fonction C++ depuis un thread C - C++ - Programmation
MarshPosté le 15-07-2006 à 15:15:30
Je me pose quelques petites question de C/C++.
L'idée globale du programme consiste en un serveur tcp/ip qui reçoit des petites reqûetes, les traites et renvoie une réponse. Assz classique donc.
Je pars d'un main écrit en C qui écoute sur un socket. A chaque nouvelle connection, il se forke (appel système fork() ).
Le processus fils va alors partir sur plusieurs threads. Il fait par exemple deux pthread_create . C'est la que je me demande comment faire pour que la fonction exécutée par le nouveau thread soit un module écrit en C++.
Le but étant à partir de là de faire de l'OO.
La solution évidente est d'include un .h avec le prototype de la fonction et de se débrouiller pour que gcc ait compilé mafonction.cpp.
Est ce la "bonne" façon de faire ?
Quelle serait la différence entre ça et le fait de définir un
extern "C" mafonction();
Et de linker à la main ?
Même de façon plus générale, j'ai du mal à saisir pourquoi on ne fait pas plus souvent de extern ... ( même si je pense que l'include soit plus beau).
Marsh Posté le 15-07-2006 à 15:15:30
Je me pose quelques petites question de C/C++.
L'idée globale du programme consiste en un serveur tcp/ip qui reçoit des petites reqûetes, les traites et renvoie une réponse. Assz classique donc.
Je pars d'un main écrit en C qui écoute sur un socket. A chaque nouvelle connection, il se forke (appel système fork() ).
Le processus fils va alors partir sur plusieurs threads. Il fait par exemple deux pthread_create . C'est la que je me demande comment faire pour que la fonction exécutée par le nouveau thread soit un module écrit en C++.
Le but étant à partir de là de faire de l'OO.
La solution évidente est d'include un .h avec le prototype de la fonction et de se débrouiller pour que gcc ait compilé mafonction.cpp.
Est ce la "bonne" façon de faire ?
Quelle serait la différence entre ça et le fait de définir un
extern "C" mafonction();
Et de linker à la main ?
Même de façon plus générale, j'ai du mal à saisir pourquoi on ne fait pas plus souvent de extern ... ( même si je pense que l'include soit plus beau).
Merci