Toon posts:

[VB6] Multithreading in Win2K*

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb nu een stukje code dat het vrij aardig doet vanuit vb(6.0) zelf en maar heel zelden nog crasht.
maar dan komt het compilen... en de exe die dan ontstaat werkt voor geen ruft
het programma crasht dan meteen en de error kan ik al helemaal niet vinden
heeft iemand misschien een idee wat ik verkeerd doe.... per ongeluk bepaalde api call vergeten ofzo?
code:
1
2
3
4
5
6
7
8
dim lpThreadId As Long
CreateThread(0&,0&,AddressOf newthread, 0, 0, lpThreadId)

Sub newthread()
Call CoInitializeEx(0, COINIT_MULTITHREADED)
'voer een hoop shit uit
CoUninitialize
End Sub


offtopic:
mjah, ik had al gezocht maar kon niet vinden wat ik moest hebben :)

Verwijderd

Ik geloof niet dat het de bedoeling is dat je vanuit VB6 multithreading doet. Je kan wel door deze 'hack' meerdere threads starten, maar dat wil niet zeggen dat de code die VB genereert threadsafe is. Daarom crashed het waarschijnlijk ook als je het echt gecompileerd hebt..

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 20-05 00:48

ZaZ

Tweakers abonnee

Jep idd..
Met VB6 kan je beter gewoon niet multithreading gebruiken. VB6 is zeer onstabiel ermee namelijk.
Als je het perse moet gebruiken, en je wil het niet in een andere taal maken, dan kan je altijd nog ff kijken of je nog ergens een versie 5 van VB hebt. Die is namelijk een stuk stabieler met multithreading.

Lekker op de bank


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

VB6 snapt geen kont van synchronizatie en is dus per definitie niet geschikt voor multithreading. Synchronizatie houdt in dat je de programmatuur beschermt tegen corrupte reads en writes van variabeles die in meerdere threads gebruikt worden. VB maakt daar een grote soepzooi van intern, dus het is ook niet van buitenaf op te lossen.

En interpreted is de kans op een probleem stukken kleiner dan compiled, waar de timeframes veel dichter bij elkaar liggen. Bovendien zal de interpreted executer hier en daar intern wel synchronizeren. Vandaar de grotere knalkans if compiled :)

Professionele website nodig?


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 26-05 18:25

Sponge

Serious Game Developer

op www.pscode.com hebben aardig wat mensen code voor multithreading staan, die blijkbaar goed werkt. Ik zou dat eens even proberen :). Misschien zijn er wel creatieve oplossingen bedacht :)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Sponge schreef op 22 december 2003 @ 08:28:
op www.pscode.com hebben aardig wat mensen code voor multithreading staan, die blijkbaar goed werkt. Ik zou dat eens even proberen :). Misschien zijn er wel creatieve oplossingen bedacht :)
Ik heb er even rondgekeken wat ze zoal hebben, en hierbij wat comments bij de eerste en een van de weinige multithreaded VB6 apps die ik vond:
When i'm downloading on win 95 or win 98 the application create an error on the kernel (using vb6 sp4)
I compiled Multi Downloader in vb6
SP4 and when I use it with win 98 or ME I have an error: exception c0000026H in module KERNEL32.DLL with 0167:bff88539.
wow... multithreading in VB... i'm responding before i download, even if the program is junk, this is the 1st multithreading attempt i've seen, automatically giving u 5 stars man!
I did the same thing with the same classes, but i gave up after all the errors, you cant hardly run it without an error, so i went on to C++, good luck to all of you who are trying to to multithreading in vb!
I ran into the same errors as Shawn with multithreading in VB. I've tried everything and it just doesn't work consistant enough for serious app development. C++ is a better choice.
De essentie lijkt me duidelijk :)

Professionele website nodig?


  • wacco
  • Registratie: Augustus 2002
  • Laatst online: 21-03-2023

wacco

cli, hlt.

Ik heb ergens in m'n eigen progsels ook eens met multithreading vb gewerkt, en als ik ze nu test; ze gaan uit met een klapper ;)
Iig ben ik toendertijd zo wijs geweest om even op te schrijven waar ik het vandaan gehaald had:
uit: msdn / periodicals / -1997 / ms systems journal / august / ingenious ways to ...
Erg mooi stuk demo code.
Verder moet je kijken wat je wilt multithreaden, als je twee dingen naast elkaar kan laten draaien zonder dat ze dezelfde variabelen wijzigen (of één, en niet meer) en /niet/ dezelfde functies aanroepen, moet het kunnen. Je sluit deadlocks dan vrijwel uit. En das best belangrijk in vb, want checken gebeurt niet voor je.

Spolap: Interactive webcomic


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

wacco schreef op 22 december 2003 @ 11:53:
Je sluit deadlocks dan vrijwel uit. En das best belangrijk in vb, want checken gebeurt niet voor je.
Deadlocks zijn juist een gevolg van 'teveel' synchronizatie. Te weinig synchronizatie, wat VB doet, resulteert in data corruption, stack overflows, access violations en al dat schoons :)

Professionele website nodig?


Verwijderd

Topicstarter
bedankt voor alle reacties, ik ga het dus ff lekker zonder mulithreading doen, wat gelukkig ook mogelijk is alleen net iets ingewikkelder is.
:)
Pagina: 1