Est-il vrai que le C++0x sera dépourvu de sémaphores ? Il y a déjà quelques questions sur Stack Overflow concernant l'utilisation des sémaphores. Je les utilise (sémaphores posix) tout le temps pour laisser un thread attendre un événement dans un autre thread :
void thread0(...)
{
doSomething0();
event1.wait();
...
}
void thread1(...)
{
doSomething1();
event1.post();
...
}
Si je faisais ça avec un mutex :
void thread0(...)
{
doSomething0();
event1.lock(); event1.unlock();
...
}
void thread1(...)
{
event1.lock();
doSomethingth1();
event1.unlock();
...
}
Problème : c'est laid et il n'est pas garanti que le thread1 verrouille le mutex en premier (étant donné que le même thread doit verrouiller et déverrouiller un mutex, vous ne pouvez pas non plus verrouiller l'événement1 avant que le thread0 et le thread1 ne commencent).
Puisque boost n'a pas non plus de sémaphores, quel est le moyen le plus simple de réaliser ce qui précède ?
1 votes
Peut-être utiliser la condition mutex et std::promise et std::future ?