Keresés

Részletes keresés

aTOM Creative Commons License 2001.03.26 0 0 8
Hali!

Köszi a tippeket!

Végülis üzenetküldözgetés lett a megoldás. Mert a tapasztalat az volt, hogy a másik objektumba való hívás (ha az másik szálon él) hazavágja a szálak által kapott lehetoségeket (amíg nem végez a fgv., olyan, mintha 1 szál lenne :( )...
Szóval üzenetek dögivel. Így már az OLE sem gáz... Csak macerás kasztolgatni + minden...

Üdv
aTOM

rafia Creative Commons License 2001.03.23 0 0 7
Hi!

Egy processzen belul a szalak kozott kommunikalni tudsz (osztott)valtozokkal is, nem kell msg-ket kuldozgetned, csak szinkronizald.

SendMsg, PostMsg teljesen eltero, az elobbi kozvetlenul hiv az utobbi msg queue-ba rak.

OLE-hez nem ertek, de javaslom az MSDN doksikat.Tobbszalu mukodeshez elkepzelheto hogy mashogy kell letrehoznod az objektumokat.Esetleg mas dll-lel kell linkelned.

Törölt nick Creative Commons License 2001.03.23 0 0 6
Hali.

Szerintem az az alapveto problema hogy ket vagy tobb szal ugyanazt az objektumot akarja egy idoben ill. atlapolva hasznalni. Ez nem szerencses mint lattad. Probalkozz szemaforos eleressel, vagy spinlock-kal.

Csa

Előzmény: aTOM (-)
aTOM Creative Commons License 2001.03.08 0 0 5
Hi NevemTeve !

Hát ennyire nem merültem bele a Windowsba...
Valószímu ezt fogom tenni (+1 szál az OLE-nak + üzengetosdi)... Más probláma is felmerült, ami üzenetesdivel kiküszöbölheto...
Szóval PostThreadMessage lesz a sláger a cuccomban :)) Majd gyártok egy fasza ideológiát, miért ez a frankó (a diplomamunkámba kell :)) )

Üdv
aTOM

Előzmény: NevemTeve (4)
NevemTeve Creative Commons License 2001.03.07 0 0 4
Na várjunk csak a SendMessage az tulajdonképpen szubrutinhívást jelent, azaz megvárja hogy a hívott ledolgozzon...
Szerintem a te esetedben kellene egy "OLE-szerver-szál" aki (általában) tétlenül várja az üzeneteket, és egy vagy több kliens szál, aki kéréseket küld (PostMessage) ennek a szervernek.
Másik kérdés, hogy kell-e a szervernek nyugtát küldenie a klienseknek, ha sikerült egy-egy feladatot elvégeznie...
aTOM Creative Commons License 2001.03.07 0 0 3
NevemTeve!

Köszi a reagálásokat, úgy fest más nem nagyon tud/akar szólni :(

Rosszul fogalmaztam. Az a gond, hogy kultúráltan a PostThreadMessage az, ami müxik. De ez csak akkor lesz hatással a fogadóra, mikor megnézi, van-e üzenet. Azt figyeltem meg, hogy a SendMessage és a PostMessage eléggé eltérő futásidőt eredményez.
A szívásom ott van, hogy egy modemes cuccon kell pontosan hibaarány mellett késleltetést is mérni. Namost a PostMessage miatt nem pontos a triggerelés szerintem. Vagyis, ha jól sejtem pl. az UI terheltsége miatt pl.később néz rá az objektum az üzenetekre... Ez meg egy nem determinisztikus hibát ad a mérésemhez :(((

Ezért kéne rájönni, hogy mi a titka a szálak közötti objektum hívásnak. Valahol ott van a kutya elásva, hogy vannak bizonyos MFC objektumok, amik nem oszthatók meg szálak között. pl. CWnd-ből származtatottak esetén... De, hogy pl. az Excel esetében mit tehetnék...

Üdv
aTOM

Előzmény: NevemTeve (2)
NevemTeve Creative Commons License 2001.03.07 0 0 2
Na ezt eltoltam... nem objekum-orientált objektumokra gondoltam, amik tényleg a közös memóriában vannak, hanem op.rendszer szintű objektumokra, mint fájlok, socketek stb...

Úgy megy a dolog, ha üzeneteket küldözgetek az OLE objektumot létrehozó szálnak, de lassú :((
Ne má... saját programon belül egy üzenetküldés/fogadás nem lassíthat mérhetően... vagy tévedek...

Előzmény: aTOM (1)
aTOM Creative Commons License 2001.03.07 0 0 1
NevemTeve!

Amit mondasz így nem állja meg a helyét!
Már csak azért sem, mert elvben ugye ugyan azt a memóriát használják. A saját objektumaimat halál lazán elérem, mármint más szálakból. Vagyis pl a portra író szál frankón használja a fő szál objektumait + az olvasó szál az író objektumaiba is hívogat és müxik!
A gáz egyedül az OLE objektummal van :(((
Az a legnagyobb gond, hogy gyorsnak kellene lenni az adatátvitelnek az OLE "linken" át. Úgy megy a dolog, ha üzeneteket küldözgetek az OLE objektumot létrehozó szálnak, de lassú :((

Üdv
aTOM

Előzmény: NevemTeve (0)
NevemTeve Creative Commons License 2001.03.07 0 0 0
Semmit sem értek ehhez a rendszerhez, de szerintem amit akarsz az filozófialiag lehetetlen: ha már szétágazott a programod szálakra, akkor az egyes szálak által léterhozott objektumok nem közösek.
Előzmény: aTOM (-)
aTOM Creative Commons License 2001.03.06 0 0 topiknyitó
Sziasztok!

Egy nekem nagy probléma megoldásában kérném a hozzáértők segítségét.

VisualStudio 6.0-ával írok egy MFC alkalmazást.
A program több szálon fut (sorosport kezelés 2 szál + a fő szál). Az Excel-t + Chart-ot kellene OLE automation-nal meghajtanom.
A gond a következő:
- ha a fő szálban létrehozok egy Excel OLE objektumot, működik szépen.
- irok ügyes kis függvényeket, szépen használják az előbbi objektumot.
-DE!! Ha egy másik szálból hívok egy fentebbi ügyes kis függvényt, szétszáll a program. Hol az MFC dll, hol a kernel, hol az msvcrt dll-ben :((((

Namost, ha abban a szálban hozom létre az objektumot, működik...

KÉRDÉS: Mit kell tenni, hogy az egyik szálban létrehozott OLE objektumot a másik szálból használhassam?

Lécci, aki tud segítsen, mert fontos lenne!!!
Előre is köszi!

Üdv
aTOM

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!