Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


C# Threading: Mutex sempaforer? Counting semafore? Monitor?

Postades av 2005-06-25 15:31:28 - Ted Ekeroth, i forum c# (c-sharp), Tråden har 1 Kommentarer och lästs av 881 personer

Hej,

det finns en massa störiga saker i Compact Framework där bland annat det här med Monitorer inte fungerar.

Jag vill att en tråd ska vänta med att göra något tills den får en "notify" (eller Pulse som de kallar det i .NET), utgöra en uppgift, sedan vänta igen på nästa "Pulse". Det går att göra i vanliga Framework, men att göra en Pulse i Compact Framework går dessvärre inte.

Så jag meckar loss lite med semaforer men inser att det kommer lite segt att få samma beteende. Tacksam ifall nån assisterar mig här i tänkandet:

Om jag har en semafor (Mutex är det enda som finns ser det ut som) kan jag direkt vid skapandet av semaforen göra en WaitOne ("ta" den som jag uppfattat det).
När sedan min tråd, som jag vill ska göra en viss operation, ska försöka ta den går det inte för den är redan tagen av "nån".
När semaforen släpps kan min tråd gå vidare (ta semforen), göra vad den ska/operationen... Men sen vad? Om tråden släpper semaforen direkt efter den är klar med sitt kan den ta den direkt igen och sedan står man där med en tråd som utför operationen heela tiden... och det är ju inte bra.

Jag vill egentligen att den ska släppa semaforen, ställa sig o vänta igen. Men hur gör man det?
Ska man ha två trådar som turas om att "äga" olika semaforer?

Hmm, tacksam för lite tips och ideér.

MVH


Svara

Sv: C# Threading: Mutex sempaforer? Counting semafore? Monitor?

Postades av 2005-06-25 19:46:25 - Ted Ekeroth

Jag har meckat lite vidare med problemet ovan och tror jag kommit fram till att det är jefligt svårt att få en tråd att vänta på ett event, göra en sak och sedan ställa sig och vänta igen.

Som jag gör nu:

- Main skapar semaforen
- Main tar semaforen, mutex.WaitOne()
- Tråden skapas och startas
- Tråden försöker (i sin Run-metod) att ta samma mutex, form1.mutex.WaitOne()
- Tråden låses (precis som den ska) eftersom Mutex:en är redan tagen.

VId en viss tidpunkt kommer jag få in lite data på en TCP-socket, som ska säga till en MessageHandler att fixa så att Mutex:en släpps av min Main (form1) för att låta min tråd göra något.

Jag försökte alltså något i stil med att MessageHandler:n gör:
form1.mutex.ReleaseMutex()
men (PROBLEM 1) det gick inte för den är inte "ägaren" till mutex:en.

PROBLEM 2 är då detta:
Säg att det hade gått att ReleaseMutex ovan, min tråd kommer då att lossna och genomföra någon operation. Därefter ska den återgå och vänta, precis som innan, tills nästa event/data kommer in.
Men detta kommer inte gå för den har redan Mutex:en och den låses INTE om man nu gör en WaitOne() igen på samma mutex.
Således kan jag inte låsa den igen.

Hur går man tillväga för att lösa detta? För det MÅSTE väl gå att göra? Annars är ju nästan hela trådkonceptet dött tycker man...

Väldigt tacksam ifall jag kan få tips och ideér!

MVH


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 165
27 952
271 704
694
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies