Главное преимущество я вижу использование C++ вместо C#, компилирует в собственный код, таким образом, мы получаем лучшую производительность. C# легче, но компилирует в управляемый код.
Почему кто-либо использовал бы управляемый С++ для? То, что способствует ему, дает нам?
Управляемое C ++ и C ++ / CLI позволяют легко написать управляемый код, который взаимодействует с наживленным C ++.
Это особенно полезно при миграции существующей системы в .NET и при работе в научных контекстах с расчетами, которые должны работать в C ++.
Управляемый C ++ позволяет проще проводить между нативным кодом и управляемым кодом. Например, если у вас есть библиотека в C ++ (.CPP-файлах и файлах .h), вы можете связать их в свой проект и создать соответствующие объекты CLR и просто вызовите нативный код из объектов CLR:
#include "yourcoollibrary.h"
namespace DotNetLibraryNamespace
{
public ref class DotNetClass
{
public:
DotNetClass()
{
}
property System::String ^Foo
{
System::String ^get()
{
return gcnew System::String(c.data.c_str());
}
void set(System::String ^str)
{
marshal_context ctx;
c.data = ctx.marshal_as<const char *>(str);
}
}
private:
NativeClassInMyCoolLibrary c;
};
}
Конечно, если имеется атомарная инструкция CompeyAndSwap
:
for (i = 0; ; i = (i + 1) % MAILBOX_SIZE)
{
if ((mailbox[i].owned == false) &&
(CompareAndSwap(&mailbox[i].owned, true, false) == false))
break;
}
mailbox[i].message = message;
mailbox[i].ready = true;
После чтения сообщения поток-потребитель просто наборы почтовый ящик [i] .ready = false; почтовый ящик [i] .owned = false;
(в таком порядке).
Есть несколько библиотек Javascript, которые реализуют кластеризацию и очень легко интегрируются в существующий мэшап:
Вы также можете прочитать эту запись блога , в которой рассматриваются различные альтернативы.
-121--2975524-(c + +/cli - новое имя) Можно переносить собственный код для безупречной работы с контролем мусора c # и даже выполнять обратные вызовы. Обратно можно создавать управляемые типы и взаимодействовать с ними из c++.
Позволяет разработчикам легко переходить на c #, чтобы пилотировать быстрое время сборки и т.д., например, xna, связываясь с собственными библиотеками, как упомянуто!