Utiliser un thread pour transmettre un fichier via FTP

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Marc56
Messages : 2196
Inscription : sam. 08/févr./2014 15:19

Re: Utiliser un thread pour transmettre un fichier via FTP

Message par Marc56 »

Ne pas oublier que c'est l'OS qui va gérer les threads.
Mmmm...
PureBasic - Thread
« Un thread s'exécute à l'intérieur du programme, il ne s'agit pas d'un autre processus. Lorsque le programme se termine, tous les threads sont détruits. Sous PureBasic, les threads sont des procédures appelées de manière asynchrone. Un thread tourne jusqu'à ce que la procédure se termine. »

@boddhi
« Note: Les threads doivent être utilisés avec précaution, car il est possible que des ressources partagées (mémoire, fichiers, variables etc..) soient accédées au même moment ce qui causera des résultats aléatoires. Les commandes relatives aux 'Mutex' peut être utilisées pour synchroniser ces ressources partagées. »

Découper un programme en un tas de threads ne le fera pas tourner globalement plus vite. Ça permet simplement de libérer l'interface principale. Pour arrêter un thread, on utilisera plutôt PostEvent (en envoyant un flag de fin pour quitter la procédure) que KillThread. Un thread qui en appelle un autre etc va vite devenir ingérable...

:wink:
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Utiliser un thread pour transmettre un fichier via FTP

Message par boddhi »

Suite...
En gros, voici l'organigramme de mon code...
Image
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Utiliser un thread pour transmettre un fichier via FTP

Message par boddhi »

Salut Marc,
Marc56 a écrit : lun. 24/juil./2023 10:43 Découper un programme en un tas de threads ne le fera pas tourner globalement plus vite. Ça permet simplement de libérer l'interface principale. Pour arrêter un thread, on utilisera plutôt PostEvent (en envoyant un flag de fin pour quitter la procédure) que KillThread. Un thread qui en appelle un autre etc va vite devenir ingérable...
Effectivement, j'ai créé plusieurs procédures threadées (chacune ayant un objectif différent et s'exécutant les unes après les autres) pour permettre à l'utilisateur de mettre en pause ou en arrêter chacune d'elles en cours d'exécution.
A cette fin, j'utilise une variable structurée avec des flags Pause et Arrêt pour déterminer, dans les boucles de ces procédures, si l'utilisateur a cliqué sur l'un des boutons dédiés.

Le problème que je rencontre c'est lorsqu'après deux ou trois procédures déjà threadées, quand je provoque un arrêt définitif (flag Arret à 1) à l'intérieur d'une nouvelle, je me retrouve avec des erreurs mémoire. J'ai beau tout essayer, je ne trouve pas l'origine de ce qui provoque ces erreurs fatales. Je finis par me dire que je m'y prends très vraisemblablement mal.

Je me suis basé sur les codes et informations déjà communiqués par Cage et Ollivier en les adaptant à mes propres besoins, mais ça plante...
Il y a quelque chose qui m'échappe encore dans la gestion correcte des threads... :oops:
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Utiliser un thread pour transmettre un fichier via FTP

Message par microdevweb »

Désolé Mark,

Peut-être me sui je mal exprimé. Mais dans mon cours de temps réel. Le multi threading était un élément important, car c'est l'os qui décide quand le thread sera exécuté.

D'où la difficulté d'exécuter plusieurs threads qui partagent les mêmes ressources en même temps.

Maintenant, il est vrai qu'il ne faut pas en abuser.

@boddhy, je regarderais quand j'aurais un moment.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Répondre