begin process at 2010 02 09 22:52:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Process

 > 

Trouver l'id d'un thread


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Trouver l'id d'un thread

dimanche 16 mars 2008 à 20:28:30 | Trouver l'id d'un thread

DIMUSERS

Bonjour à tous,
J'utilise QueryPerformanceCounter et pour des raisons expliquées là [ Lien ] je dois utiliser SetThreadAffinityMask. Cette fonction prends en paramètre le handle du thread physique. Lorsque l'on a besoin de ce handle pour le thread courrant, il existe des exemples qui utilisent la fonction Win32 GetCurrentThreadId() [ Lien ]. Dans mon cas, je crée le thread et je voudrais lui affecter un AffinityMask de façon externe. Je dois donc retrouver l'id de ce thread. Il existe une fonction Win32 GetThreadId qui est "documentée" par un névropathe de chez Microsoft qui explique en résumé que pour obtenir le id du thread il suffit de passer un handle... Quelqu'un sait-il ce comment obtenir ce handle ?
Merci de votre aide.
st.antoine
mardi 18 mars 2008 à 12:33:57 | Re : Trouver l'id d'un thread

taupe4

1. Obtient le processus qui contient les threads. Par exemple "Process[] p = Process.GetProcesses("devenv")". Une des propriétés de Process est p.Threads qui retourne la liste des threads du processus.
Note: Si tu désires obtenir ton processus à toi, tu fais Process.GetCurrentProcess().

2. Utilise SetThreadAffinityMask sur le thread désiré, ou SetProcessAffinityMask si tu veux l'appliquer au processus entier.
mardi 18 mars 2008 à 20:01:05 | Re : Trouver l'id d'un thread

DIMUSERS

Merci de ta réponse,
Commen fais-je pour reconnaitre dans la liste des thread du process, celui qui correspond au thread sur lequel je veux affecter SetThreadAffinityMask. Car ce  n'est pas sur mon processus à moi que veux appliquer cette propierté mais sur un autre.
Voici le code qui me sert d'exemple :
using System;
using System.Runtime.InteropServices;

using System.Diagnostics;
using System.Threading;
namespace Tester
{
class Program
{
[DllImport("kernel32")]
static extern int GetCurrentThreadId();
static void Main()
{
Thread t = new Thread(
new ThreadStart(DoWork));
t.Start();
t.Join();
}
static void DoWork()
{
foreach(ProcessThread pt in Process.GetCurrentProcess().Threads)
{
// Voilà c'est ici : Pour trouver le utid du threadcourrant OK, mais comment faire si il s'agit d'un autre thread. Dans mon cas, il s'agit d'un trhread qui fait le QueryPerformanceCounter (voir plus bas) ?
int utid = GetCurrentThreadId();
if (utid == pt.Id)
{
pt.ProcessorAffinity = (IntPtr)(1); // Set affinity for this
thread to CPU #1
Console.WriteLine("Set");
}
}
}
}
}
// Ici mon thread sur leque je voudrais applique l'ProcessorAffinity

publiclong Stop()

{

QueryPerformanceCounter(

out stopTime);

return(stopTime);

}

Merci encore.




Cette discussion est classée dans : fonction, trouver, handle, id, thread


Répondre à ce message

Sujets en rapport avec ce message

Device Context [ par AXELMEDICAL ] Salut! Je me suis apercu (un peu trop tard) que le handle d'un controle changent a chaque lancement de l'application. En revanche le Device context (o Get Last ID [ par badrbadr ] Bonjour,J'ai une base de donnée dans un serveur MS SQL Express Edition. J'ai aussi une table Members.Dans ma méthode AddMember, j'utilise une requête Envoyer des paramètres à un thread [ par billou_13 ] J'aurai voulu savoir s'il y avait moyen d'envoyer un paramètre dans un nouveau thread !Parce que dès que je créé un thread : je pose T = new Thread(</ Thread et attente [ par mathmax ] Bonjour,Voilà mon problème. J'ai un thread que je veux mettre en attente d'un événement AutoResetEvent. Pendant cette attente, je voudrais qu'il envoi Affilier un MessageBox à un thread [ par duhnic ] Bonjour,A partir d'un thread, je déclenche un messageBox qui bloque mon thread en cours.Lorsque je tue le précédent thread (Abort) à partir d'un autre MultiThread & Fonction bloquante [ par ouaipdu53 ] Bonjour , Dans le cadre de la réalisation d'un logiciel de supervision, je dois crée une application multi-clients. Pour gérer cela, chaque client pos Comment stopper un thread lorsqu'il est bloqué par une fonction bloquante [ par billou_13 ] En voila une question que je me pose depuis très longtemps !En fait, je lance un serveur TCP/IP qui attend des clients en faisant la fonction Socket.A une fonction sleep sans thread??? [ par Handballeur95 ] Bonjour je voulai savoir si il existait une fonction d'attente genre sleep() sans avoir besoin d'utilisé des threadd'avance merci Pocketpc [ par neopub ] Bonjour,j'aimerai developper sous PPC (onboard), mais pas evident de trouver les fonction disponible en C#.Actuelement j'utilise PocketC, mais je trou


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales