AMcoder - javascript, python, java, html, php, sql

C++ գրադարանների գործարկում .NET-ում անկախ [փակ]

Ես ունեմ .net հավելված, որն օգտագործում է C++ գրադարաններ: Հավելվածում դուք կարող եք գործարկել մի քանի աշխատանք, և յուրաքանչյուր աշխատանք օգտագործում է C++ գրադարաններ՝ որոշ հաշվարկներ կատարելու համար: Խնդիրն այն է, որ C++ օբյեկտները կիսվում են աշխատանքների միջև, և ես ուզում եմ խուսափել դրանից: Միակ ճանապարհը, որի մասին կարող եմ մտածել, յուրաքանչյուր առաջադրանքը որպես առանձին գործընթաց գործարկելն է: Կա՞ դա անելու ավելի լավ միջոց: Ինչպես վազել այլ շրջանակում

04.08.2016

  • AppdDomain? msdn.microsoft.com/en-us /գրադարան/ 04.08.2016
  • @Matas C++-ը համօգտագործվում է .NET հավելվածների միջև, այնպես չէ՞: 04.08.2016
  • @Matas, վախենում եմ, AppDomain-ը միայն պատշաճ կերպով մեկուսացնում է .NET կոդը և շատ չի օգնում հայրենի կոդին: Ես բախվեցի մեկուսացման նման խնդիրների հետ, երբ գործ էի ունենում COM օբյեկտների հետ: 04.08.2016
  • Այո, ըստ երևույթին, հավելվածի տիրույթն այս դեպքում տարբերակ չէ: Նայեք այս stackoverflow.com/questions/23367079/ 04.08.2016
  • Նշելով ակնհայտը, գուցե, բայց ի՞նչ կասեք օբյեկտները չկիսելու և փոխարենը յուրաքանչյուր աշխատանքի համար մեկ C++ օբյեկտ ստեղծելու մասին: 04.08.2016
  • C++ գրադարանը 3-րդ կողմ է 04.08.2016
  • մի քանի աշխատանք == մի քանի թելեր: Ոչ, C++ կոդի մեծ կտորները (նույնիսկ փոքր հատվածները) երբեք անվտանգ չեն թելի համար: Չկա ոչ մի կախարդական կոճակ, որը դուք կարող եք սեղմել այդ խնդիրը վերացնելու համար: Այն գործարկելը առանձին գործընթացներով՝ դրանք խստորեն մեկուսացված պահելու համար լուծում է, որը հակված է առաջացնել երկու նոր, շատ դժվար լուծելի խնդիրներ: 04.08.2016

Պատասխանները:


1

Պատասխանն էԱյո, բայց դա հեշտ չէ:

AppDomain-ը չի տրամադրում մեկուսացում հայրենի կոդի համար, այնպես որ դուք չեք կարող օգտագործել այն ձեր նպատակի համար: Յուրաքանչյուր չկառավարվող dll-ը բեռնվում է մեկ գործընթացի համար, ոչ թե AppDomain-ի համար:

Դուք կարող եք օգտագործել WinAPI LoadLibrary() ֆունկցիան՝ ձեր գրադարանները ձեռքով մի քանի անգամ բեռնելու համար: Բեռնված գրադարանի յուրաքանչյուր օրինակ կարող է օգտագործվել առանձին շղթայում՝ անվտանգ թեմայի համատեքստով: Ահա նկարագրությունն է, թե ինչպես կարելի է ֆունկցիա կանչել դինամիկ բեռնված գրադարանից: Մի մոռացեք զանգահարել FreeLibrary()ին անվճար ռեսուրսների համար:

04.08.2016
  • Բայց ինչ անել, եթե ես մուտք չունեմ .net wrapper-ին: Ավարտե՞լ եմ 04.08.2016
  • @Zbigniew Ցավոք, այո։ Եթե ​​ձեր .NET wrapper-ը պարունակում է որոշակի տրամաբանություն, և դուք չեք կարող փոխել այն կամ ստեղծել նորը, ապա միակ ճանապարհը նման կոդ գործարկելն է առանձին գործընթացում: 04.08.2016
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..