Показать сообщение отдельно
Непрочитано 23.09.2015, 18:53   #8
Аватар для n3k0nation
Antihero

По умолчанию Re: # Авторестарт если найден deadlock

Цитата:
Сообщение от dantest Посмотреть сообщение
Я интересовался, как это повлияет на игру если не сделать рестарт если такой Deadlock имеется.
Со временем локнутся все триды в пуле packets, если дедлок в исполнении пакетов, сервер перестанет обрабатывать пакеты, очередь пакетов переполнится и мы получим out of memory, но скорее всего, перед этим Вам позвонит офигевший ГМ и скажет, что сервер повис.

Если включить, то ситуация аналогична, но офигевший ГМ уже звонит, то что сервер сам перезагружается. Особенно, это весело на эпиках.

Пример классического дедлока:
Код:
	static Object sync1 = new Object();
	static Object sync2 = new Object();
	public static void main(String[] args) {
		new Thread(() -> one()).start();
		new Thread(() -> two()).start();
	}
	
	static void one() {
		synchronized (sync1) {
			try {
				Thread.sleep(1000);
			} catch(InterruptedException e) {}
			synchronized (sync2) {
				System.out.println("pew");
			}
		}
	}
	
	static void two() {
		synchronized (sync2) {
			try {
				Thread.sleep(1000);
			} catch(InterruptedException e) {}
			synchronized (sync1) {
				System.out.println("ololo");
			}
		}
	}
Состояние гонки - тоже самое, но без слипа тридов. Если повезет, то можно поймать дедлок.

И вообще, google it.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Сказали спасибо: