Первый вопрос, на который необходимо ответить, состоит в том, необходимо ли использовать поточную обработку
, Если функциональный CalculateSmth () является в основном Зависящим от ЦП, т.е. тяжелым в использовании ЦП и в основном никаком I/O-usage, то мне нелегко видеть точку использования потоков, так как потоки будут конкурировать по тому же ресурсу, в этом случае ЦП.
, Если Ваш CalculateSmth () использует и ЦП и ввод-вывод, то это могла бы быть точка в использовании поточной обработки.
я полностью соглашаюсь с комментарием к своему ответу. Я сделал ошибочное предположение, что мы говорили о единственном ЦП с одним ядром, но в эти дни у нас есть многоядерные центральные процессоры, мое плохое.
Когда Inherited = true (по умолчанию), это означает, что создаваемый вами атрибут может быть унаследован подклассами класса, украшенного этим атрибутом.
Итак, если вы создать MyUberAttribute с помощью [AttributeUsage (Inherited = true)]
[AttributeUsage (Inherited = True)]
MyUberAttribute : Attribute
{
string _SpecialName;
public string SpecialName
{
get { return _SpecialName; }
set { _SpecialName = value; }
}
}
Затем использовать атрибут, украсив суперкласс ...
[MyUberAttribute(SpecialName = "Bob")]
class MySuperClass
{
public void DoInterestingStuf () { ... }
}
Если мы создадим подкласс MySuperClass, он будет иметь этот атрибут ...
class MySubClass : MySuperClass
{
...
}
Затем создайте экземпляр MySubClass ...
MySubClass MySubClassInstance = new MySubClass();
Затем проверьте, есть ли у него атрибут ...
MySubClassInstance <--- теперь имеет MyUberAttribute со значением SpecialName «Bob».
Да, именно это и означает. Атрибут
[AttributeUsage(Inherited=true)]
public class FooAttribute : System.Attribute
{
private string name;
public FooAttribute(string name)
{
this.name = name;
}
public override string ToString() { return this.name; }
}
[Foo("hello")]
public class BaseClass {}
public class SubClass : BaseClass {}
// outputs "hello"
Console.WriteLine(typeof(SubClass).GetCustomAttributes(true).First());