Каждый написанный вами код должен быть эффективным. Для начинающего, как и вы, самый простой способ - проверить делимость числа «n» от 2 до (n-1). Это занимает много времени, когда вы считаете очень большие цифры. Метод с квадратным корнем помогает быстрее сделать код за счет меньшего количества сравнений. Читайте о сложностях в разработке и анализе алгоритмов.
Подсказка в этом предложении.
Даже если вы сейчас выполняете метод класса, который не является производным из ContextBoundObject, например String, вы можете быть в контексте не по умолчанию, если объект ContextBoundObject находится в вашем стеке в текущем домене приложения.
Таким образом, вы могли бы вызвать WaitOne
из класса, который не является подклассом ContextBoundObject
, и при этом у вас не было бы предвзятого мнения о том, что ContextBoundObject
каким-либо образом вовлечены в ваш код, и тем не менее, рассматриваемый поток может находиться в контексте, отличном от контекста по умолчанию, потому что где-то далеко вверху в стеке вызовов метод экземпляра класса ContextBoundObject
может работать без вашего ведома.
Помимо этого единственного исключения нет других способов войти в контекст синхронизации, отличный от заданного по умолчанию.
Есть довольно хорошая статья о многопоточности с дополнительной информацией, относящейся к контекстам синхронизации, которую можно найти здесь .