Как стать автором
Обновить
0
0
Василий @Mythteria

Пользователь

Отправить сообщение
хм. скажите, а использование хэширования FNV [модификацированного] чем-то мотивировано? [Skeet, Bernstein того же порядка по вычислительной сложности; более прожорливые, например ELF, вохможно дали бы лучшее распределение]. или же FNV выбирался из ряда и показал себя наиприемлемейшим на вашем наборе данных?
посмотрите. возможно, это одна из причин, по которой никто к ней ничего не дописывает.
простите, а вы смотрели исходники «идеальной» библиотеки?
хорошо так. но есть пара замечаний:
1. методы помещения в очередь [как он у вас называется?] и ThreadProc лучше сделать на Monitor.Pulse() | Monitor.Wait(), чтобы не засыпать в цикле на длинную константу[?] QueueEmptyCheckTimeoutInMilliseconds
2. log4net, конечно, мощь. но уж очень монструозная. и как говорили коментаторы выше – подзаброшенная.
если вы действительно хотите поговорить про «тонкие моменты», то не говорите, что value – stack; reference – heap. посмотрите сначала на то, что пишет Эрик Липперт blogs.msdn.com/b/ericlippert/archive/2010/09/30/the-truth-about-value-types.aspx
да и остальное на тонкости не сильно тянет.
ок.
должно ли решение работать под любым framework?
если нет, то можно через DynamicExpression скомпилировать выражение, в котором есть обращение к полю класса C, и вызвать его.
если без DynamicExpression, то кроме habrahabr.ru/blogs/net/113543/#comment_3649608 быстро ничего не придумывается( может быть вечером подумаю. ну или ваше решение посмотрю.
никто не говорит, что должны. принципиально решение не отличается от первого приведенного [кстати, правильного, если смотреть на действующую спецификацию ECMA-335]; оно всего-навсего копирует шаблон singleton'а.
ps есть подозрение, что вы путаете инициализацию статических полей [с beforefieldinit над классом], которая действительно недетерминирована, и вызов статического конструктора [без beforefieldinit над классом], который вполне детерминирован.
тут хорошо:
habrahabr.ru/blogs/net/113543/#comment_3649325

если не вымораживаться с мьютексами и прочей загрузкой библиотек, то можно забабахать вариант с
полностью ленивой инициализацией через вложенные классы:

using System;
class A
{
class C
{
public static C c = new C();
static C() { Console.WriteLine(«from static ctor»); }
}

static void Main(string[] args)
{
Console.WriteLine(«Before static .ctor»);
C c = C.c;
Console.WriteLine(«After static .ctor»);
Console.In.ReadLine();
}
}

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность