Kinect for Windows SDK: Released!

Par | Classé dans .NET, News | Le 21/06/2011

Tags « »

0

Dévoilé durant le MIX11 qui s’est déroulé à Las Vegas en avril dernier, c’est finalement à la date du 16 juin 2011 que Microsoft a décidé de mettre à disposition le kit de développement (SDK) Kinect pour Windows. Les développeurs en herbe ou passionnés peuvent désormais se donner à coeur joie dans la conception d’applications exploitant les fonctionnalités interactives de la machine. Espérons voir fleurir rapidement sur la toile bon nombre d’outils qui sauront tirer partie de ce petit bijou technologique !

Kinect pour Windows

Sortie du SDK Kinect pour Windows

Initialement dénommé “Project Natal”, le Kinect possède désormais une place d’honneur dans le World Guiness Book comme étant l'”accessoire High-Tech le plus vendu dans un court laps de temps” (dixit. World Guiness Book). Initialement conçu pour la console de Microsoft, la Xbox 360, le Kinect s’est voulu être une nouvelle façon de jouer aux jeux vidéos sans manettes appelé également Motion Gaming. Il a rapidement réussi à attiser la sympathie du public avec son concept de commande à la fois ludique et innovante et offrant alors de nouvelles possibilités en terme d’intéractions. Disposant de deux caméras, un capteur de champ par infra-rouge et d’un microphone, le Kinect fonctionne par reconnaissance spatiale d’un corps en mouvement.

Mais les curieux n’avaient pas attendu cette sortie pour mettre au point un pilote compatible Windows pour faire leurs premiers essais. C’est ainsi que le kit CL-NUI Platform a sévi sur internet et proposait déjà de prendre le contrôle sur les capteurs vidéos de l’appareil. On a pu voir apparaître quelques démos techniques (des exemples sur http://kinecthacks.net/) prenant en compte la détection de mouvements qui laisse présager d’autres innovations dans la conception d’interfaces interractives différentes du mythique combo clavier/souris ou plus récemment écran tactile : robotique, réalité augmenté, … Minority Report, ça vous rappelle des souvenirs ?

Lire la suite…

Détecter les deadlocks en C# / .NET grâce au pattern IDisposable

Par | Classé dans .NET, Avancé, Intermédiaire | Le 09/02/2011

Tags « »

5

Détecter les deadlocks en C# / .NET grâce au pattern IDisposable

Si vous êtes développeur en environnement multithread, alors vous vous êtes déjà posé cette question : Où est ce deadlock ? !

Bien sûr, ce deadlock est non-reproductible, il survient chez l’utilisateur, et l’on peut passer des heures à le chercher. Sans jamais être sur d’avoir trouvé LE deadlock qui pose problème !

Vous trouverez dans ce post un exemple de lock qui a pour objectif de

  1. Pouvoir détecter les deadlocks
  2. Proposer une syntaxe claire et concise
  3. Ajouter un overhead minimum en terme de performance à la syntaxe lock C# classique

Petit rappel : qu’est-ce  qu’un deadlock ?

Un deadlock (interblocage dans sa version française que personne n’utilise) est la situation dans laquelle 2 threads s’attendent mutuellement. Cas concret :

  1. Un thread T1 acquiert une ressource R1
  2. Un thread T2 acquiert une ressource R2
  3. T1 demande la ressource R2
  4. T2 demande la ressource R1

Avec un schéma :

Exemple de code provoquant un deadlock


void CreateDeadLock()
{
   Object R1 = new object();
   Object R2 = new object();

   Thread T1 = new Thread(delegate() { Work(R1, R2); });
   Thread T2 = new Thread(delegate() { Work(R2, R1); });

   T1.Start();
   T2.Start();
}

void Work(Object acquire, Object demand)
{
   lock (acquire)//T1 take R1 and T2 take R2
   {
      Thread.Sleep(1000);//To ensure that the ressources are taken
      lock (demand)
      {
      }
    }
}

NB : Bien sûr, les situations réelles sont souvent plus compliquées, impliquant par exemple plus de 2 threads ou des locks implicites (écriture dans un fichier…).

Lire la suite…