Showing results 1 to 4 of 4

Thread: Multithreading Thread safety

  1. #1
    Join Date
    26.08.2017
    Posts
    7

    Default Multithreading Thread safety

    Guten Tag,

    ich plane eine "PROJECT SERVICE EXTENSION", in welcher das Lesen von Variablen, als auch das Schreiben auf Variablen in einem anderen als dem UI-Thread geschehen soll. Koennen die GetValue/SetValue direkt benutzt werden oder muss das Lesen und Schreiben immer ueber ein Marshalling auf den UI-Thread erfolgen?

    Viele Gruesse
    Last edited by Ruebezaehler : 24th November 2017 at 13:39

  2. #2
    Join Date
    28.02.2013
    Posts
    118

    Default Re: Multithreading Thread safety

    Guten Morgen Ruebezaehler,

    generell kann man schon aus anderen Threads auch auf die zenon Objekte zugreifen.
    Es ist halt "um ein Eck" langsamer als aus dem Hauptthread...

    Schöne Grüße,
    Felix

  3. #3
    Join Date
    26.08.2017
    Posts
    7

    Default Re: Multithreading Thread safety

    Quote Originally Posted by felixst View Post
    Guten Morgen Ruebezaehler,

    generell kann man schon aus anderen Threads auch auf die zenon Objekte zugreifen.
    Es ist halt "um ein Eck" langsamer als aus dem Hauptthread...

    Schöne Grüße,
    Felix


    Guten Tag Felix,
    ich hatte leider Deine Antwort erst heute gesehen, vielen Dank.

    Habe ich Dich richtig verstanden, dass GetValue/SetValue an sich bereits in "multithreaded" Umgebungen direkt verwendbar sind und deren Aufrufe müssen nicht im zenon-Thread bzw. UI-Thread erfolgen? Was ist unter "um ein Eck" langsamer zu verstehen? Ist das das (SetValue/GetValue interne) Marshalling auf den UI-Thread?

    In diesem Zusammenhang habe ich noch eine Frage: Ein AddIn "A" läuft als Dienst und erstellt einen OnlineContainer. Das AddIn "A" abonniert eine Benachrichtigung für "BulkChange" um auf Änderungen zu reagieren. Bei einem zweiten AddIn "B" soll auf dieselben Variablen des in "A" erstellten OnlineContainers reagiert werden. Kann "B" ebenso einen "BulkChange"-Handler auf den in "A" erstellten OnlineContainer registrieren oder gibt es dabei Fallstricke (für ein Beispiel hat das funktioniert).

    Die zenon Hilfe ist bis jetzt relativ spärlich an Informationen. Die Beispiele sind gut aber meistens "geradeaus" und lassen nicht immer auf eine komplexere Verwendung des Frameworks schliessen. Sind Workshops zu diesem Thema geplant?

    Viele Grüße, Ruebezaehler

  4. #4
    Join Date
    28.02.2013
    Posts
    118

    Default Re: Multithreading Thread safety

    Hallo Rübezähler,

    Jeder Aufruf über die zenon API wird über den Hauptthread gefahren, das ist ist so definiert in COM. Man kann in .NET Multithreading betreiben, jedoch wird der Aufruf selbst dann auf den Hauptthread synchronisiert (von .NET selbst). Diese Synchronisierung benötigt zeit. Das macht bei wenigen Aufrufen gar nix, wenn jedoch x-tausende Aufrufe durchführen werden müssen, dann sehr wohl.

    Das mit dem selben Online Container aus zwei verschiedenen AddIns ist wohl möglich, aber sehr fehleranfällig und nicht wirklich guter Coding-Stil. Was ist beispielsweise, wenn Add-In A beendet wird? Es gibt keine garantierte Sequenz, die es erlaubt zu definieren das Add-In A vor Add-In B startet, etc.
    Von einer solchen Vorgangsweise würde ich vollkommen abraten.

    Schöne Grüße,
    Felix

Similar Threads

  1. Signature Test Thread
    By xandit in forum Off Topic
    Replies: 22
    Last Post: 5th September 2017, 13:39
  2. What do you think about the forums? Feedback thread
    By markclemens in forum Off Topic
    Replies: 27
    Last Post: 19th July 2016, 09:19
  3. Replies: 1
    Last Post: 14th April 2015, 09:08
  4. Start a thread in VBA
    By mrk in forum VBA
    Replies: 1
    Last Post: 19th March 2008, 10:12
  5. Replies: 6
    Last Post: 18th March 2008, 18:09

Tags for this Thread

Posting Rules

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •