Век живи, век учись: почерпнул из http://juick.com/2013688 новый для себя трюк. Есть у нас некая нить, в которой крутится poll(), и нам нужно нить эту аккуратно завершать (то есть не просто pthread_cancel(), а по-человечески, с освобождением ресурсов). Раньше я бы тупо добавил таймаут в poll и проверял бы какую-то общую переменную-флаг, но теперь я умный: можно создать pipe и поместить его дескриптор в список опрашиваемых poll() ресурсов. Чтобы завершить нить, достаточно будет в этот самый пайп что-нибудь записать. Красота!