Udostępnianie zmiennych między C # i C ++

Piszę oprogramowanie w języku c #, które musi wywoływać wiele razy, a przez wiele wątków funkcję w niezarządzanej bibliotece c ++.

Mam taki plik C ++:

// "variables" which consist in some simple variables (int, double) 
//  and in some complex variables (structs containing arrays of structs)


extern "C"
{
     __declspec(dllexport) int function1()
    {
        // some work depending on random and on the "variables"
    }
}

i taka klasa C #

public class class1
{
    //  "variables" <--- the "same" as the C++ file's ones 
    //  Dll import <--- ok

    public void method1()
    {
        int [] result;

        for(int i=0; i<many_times; i++)
        {
            result = new int[number_of_parallel_tasks];                

            Parallel.For(0, number_of_parallel_tasks, delegate(int j)
            { 
                 // I would like to do  result[j] = function1()  
            });

            //  choose best result
            //  then update "variables" 
        }
    }

}

Napisałem „Chciałbym zrobić ...”, ponieważ funkcja c ++ potrzebuje w każdej rundzie aktualizacji „zmiennych”.

Moje pytanie brzmi:

Czy możliwe jest współdzielenie pamięci między C ++ i C #, aby za każdym razem uniknąć przekazywania referencji? Czy to tylko strata czasu?

Czytałem o plikach mapowanych w pamięci. Czy mogą mi pomóc? Czy znasz jednak bardziej odpowiednie rozwiązania?
Dziękuję Ci bardzo.

questionAnswers(3)

yourAnswerToTheQuestion