Il se peut que ma compréhension soit erronée, auquel cas quelqu'un pourra, je l'espère, la clarifier (cc @SonarJetLens).
Dans le cas où un thread est complètement en avance sur l'autre, nous avons, par exemple, que le thread A acquiert le verrou et attend, parce qu'il est la victime. Il attend indéfiniment jusqu'à ce que le thread B arrive et se pose en victime, laissant ainsi A passer à sa section critique. Dans ce cas, je ne vois pas d'impasse : par définition, une impasse, c'est lorsqu'aucun progrès n'est réalisé par tout fil.
Toutefois, considérons le cas où le fil A ne tente jamais de récupérer le verrou. Dans ce cas, le thread B attendra indéfiniment, sans jamais pouvoir atteindre sa section critique. Pour moi, cela ressemble plus à famine ce qui signifie que le fil B a été affamé et n'a jamais pu acquérir le fil.
Si le programme s'arrête là, alors le thread A a fait des "progrès" en exécutant sa section critique, et le thread B n'en a pas fait, donc il n'y a pas de blocage. Cependant, il y a famine, puisque le fil B a essayé d'acquérir le verrou et n'a jamais réussi, ce qui contredit la définition de la liberté de famine.
J'espère que tout cela a un sens et que je ne fais pas d'erreur de terminologie ou de définition, et j'espère vraiment que quelqu'un pourra m'éclairer :).