Любой с опытом в 3D рендеринге должен быть знаком с деревья BSP . Обычно это - метод путем структурирования 3D сцены, чтобы быть управляемым для рендеринга знания координат камеры и переноса.
Двоичное разделение пространства (BSP) является методом для того, чтобы рекурсивно подразделить пространство на выпуклые наборы гиперплоскостями. Это подразделение дает начало представлению сцены посредством древовидной структуры данных, известной как дерево BSP.
, Другими словами, это - метод разбивания полигонов сложной формы в выпуклые наборы или меньших полигонов, состоящих полностью из неуглов отражения (углы, меньшие, чем 180В °). Для более общего описания разделения пространства посмотрите, что пространство делит.
Первоначально, этот подход был предложен в 3D компьютерной графике для увеличения эффективности рендеринга. Некоторые другие приложения включают работающие геометрические операции с формами (конструктивная стереометрия) в CAD, обнаружении коллизий в робототехнике и 3D компьютерных играх и других компьютерных приложениях, которые включают обработку сложных пространственных сцен.
Он предотвращает выполнение кода, заключенного в фигурные скобки, несколькими потоками. Пока один поток выполняет этот код, остальные блокируются. Когда первый поток завершится, один из заблокированных потоков запустит синхронизированный код и т. Д.
Почему вы хотите это сделать? Код внутри блока может изменять объекты таким образом, чтобы они находились в несовместимом состоянии до выхода из блоков. Таким образом, второй входящий поток найдет несовместимые объекты. С этого момента следует хаос.
Примером может быть удаление объекта из одного пула и его вставка в другой. Второй поток может работать, пока первый поток перемещает объект, и впоследствии найти объект, на который есть ссылка в обеих коллекциях, или ни в одном из них.
Обратите внимание, что следующие два эквивалентны:
synchronized void someMethod() {
// ...
}
и
void someMethod() {
synchronized (this) {
// ...
}
}
Он предотвращает одновременный доступ к ресурсу. У Sun есть довольно хорошее описание с примерами.
Из ныне несуществующего Краткого справочника по Java, ранее находившегося на http://www.janeg.ca/scjp/threads/synchronized.html
:
Синхронизация потоков Эффект сериализации доступа к блокам код, работающий в потоке. Сериализация в этом контексте означает давая по одной нити право для выполнения определенного блока кода.