Trabalho 3 – EPOS
System Object Destruction
No exercício três deviamos implementar o controle de destrução de objetos, o qual não deve corromper o sistema e também deve estar de acordo com a semântica da linguagem de programação.
A implementação adotada funciona da seguinte maneira: na class Thread foi adicionado um campo _container, nele é guardada a fila em que a Thread se encontra no momento. Os métodos desta classe foram alterados para que a consistência do campo _container seja mantida. No método join, por exemplo, o campo _container é atualizado com o endereço da fila _waiting_for_me do objeto em que se da join.
Quando uma thread entra para o estado RUNNING o seu campo container não é atualizado, já que caso o mesmo seja deletado (ou auto-deletado), ele tentará se remover de uma fila em que não está, não causando mais problemas.
Quando uma thread que possui elementos na sua fila _waiting_for_me é deletada, ela não acorda aquelas que a estão esperando, entrando em uma situação de deadlock. Nosso sistema, por conseguir detectar essa situação facilmente, gera um aviso. Porém, caso a Thread que tente se dar join já tiver sido destruída e removida da memória, a thread em execução trava, como nosso sistema não consegue detectar esse erro ele não é informado.
Quando um objeto que extende a classe Synchronizer é deletado, seu destrutor chama wakeup_all, fazendo com que todos as threads que estiverem travadas nele continuem a execução.
Arquivos Modificados:
Thread.h
Thread.cc
Sycronizer.h
mostbet canlı proqnoz https://mostbet72483.help/
mostbet ekspress kupon mostbet ekspress kupon
1win suport http://1win83742.help/
игра лаки джет мелбет melbet42570.help
1вин сайт 1win07492.help
1win casino Republica Moldova https://1win83742.help/
mostbet əməliyyat tarixçəsi https://mostbet72483.help/
1win descarcare sigura 1win descarcare sigura
monopoly big win today result live youtube https://monopolylives.com/
1вин скачать на android https://1win07492.help
mostbet noul site mostbet noul site
mostbet mobil giriş http://mostbet72483.help/
mostbet keşbek faiz mostbet72483.help
monopoly big baller today live app https://monopoly-live-bangladesh.com/
fake money crazy time https://crazy-timez.com/
monopoly bigballer live https://monopoly-live-bd.com/
1win depozit maxim https://www.1win83742.help
crazy time probabilità https://crazy-time-rome.com/
1win как пополнить через мегапей https://1win07492.help
1win Ош кирүү https://1win07492.help/
mostbet promo kod http://mostbet72483.help/
мелбет киберспорт cs2 ставки melbet42570.help
mostbet cod promoțional Republica Moldova mostbet cod promoțional Republica Moldova
1win link alternativ 1win83742.help
мелбет изменить почту melbet42570.help
melbet купон ставок https://www.melbet42570.help
mostbet hesabı bağlamaq mostbet hesabı bağlamaq
1win как вывести через мбанк 1win как вывести через мбанк
mostbet azərbaycanda çıxarış olurmu https://mostbet72483.help
mostbet crash bonus https://mostbet14793.help/
1вин официальный сайт https://1win07492.help/
1вин лаки джет http://1win07492.help
stergere cont 1win stergere cont 1win
1win регистрация на сайте https://1win07492.help
mostbet azn limitləri https://mostbet72483.help
melbet регистрация не работает http://melbet42570.help
наркологическая помощь наркологическая помощь
1win мегапей Киргизия 1win мегапей Киргизия
mostbet mastercard http://mostbet19438.help/
melbet скачать без вирусов http://melbet42570.help
Как seo оптимизация сайта работает для мультиязычных проектов?
1win retragere maxima http://www.1win83742.help
mostbet pierwszy depozyt bonus mostbet14793.help
1win lucky jet pariu http://1win83742.help
1win blackjack live Moldova 1win blackjack live Moldova
mostbet website oficial Republica Moldova http://mostbet19438.help
lucky jet 1вин http://1win07492.help
mostbet adresa oficiala https://mostbet19438.help
мелбет букмекер мелбет букмекер
mostbet turnieje kasyno https://mostbet14793.help/