Une application (ou un jeu) Windows est composée d'un ou plusieurs processus qui font tourner un ou plusieurs
threads. Au coeur du noyau de l'OS se trouvent ce que Microsoft appelle les
primitives de synchronisation (ou
objets de synchronisation), une série de classes, méthodes et variables qui permettent aux programmes d'utiliser plusieurs
threads et de les manipuler afin de faire tourner plusieurs routines de code en parallèle. On parle de synchronisation car les
threads en question communiquent entre eux et doivent souvent s'attendre.
Typiquement dans un jeu, les
threads qui s'occupent de la logique (gameplay, AI...) doivent attendre que ceux en charge du rendu aient fini leur boulot et vice versa sous peine d'avoir une désynchronisation entre ce qui se passe et ce qui est affiché. Les
threads en question sont assignés aux différents coeurs d'un processeur par le
scheduler. Comme tous les OS, Linux dispose aussi d'un
scheduler mais ne possède pas des mêmes primitives de synchronisation, ce qui est problématique pour exécuter les jeux Windows sous Linux via Wine.