Multithreading in importierten cpp filez

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

porcus

Betreff: Multithreading in importierten cpp filez

BeitragDo, Feb 07, 2008 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ist es möglich in den importierten cpp Dateien Multithreading zu verwenden, oder geht es da auch nicht ?
(Ich habe leider keinen Dual/Quad Core um das zu testen.)
*Account deaktiviert*
 

Dreamora

BeitragDo, Feb 07, 2008 8:31
Antworten mit Zitat
Benutzer-Profile anzeigen
sofern der teil der CPP mit dem du kommunizierst via Extern im gleichen Thread läuft wie BM ist es kein Problem.
wenn du jedoch versuchst das ganze via Callback zu verlinken, wird dir der GC um die ohren fliegen, sobald es auf einem Multicore / Multiprozessor System läuft.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Markus2

BeitragDo, Feb 07, 2008 14:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Vieleicht hilft dir das weiter, ist aber ein VB6 Beispiel .
Code: [AUSKLAPPEN]

'In a form
'Add a command button to the form
Private Sub Command1_Click()
    'After you click this button, try to move the window
    'You will see that the AsyncThread-function was executed asynchronously
    hThread = CreateThread(ByVal 0&, ByVal 0&, AddressOf AsyncThread, ByVal 0&, ByVal 0&, hThreadID)
    CloseHandle hThread
End Sub
Private Sub Form_Unload(Cancel As Integer)
    'If the thread is still running, close it
    If hThread <> 0 Then TerminateThread hThread, 0
End Sub
'In a module
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long
Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public hThread As Long, hThreadID As Long
Public Sub AsyncThread()
    'Let this thread sleep for 10 seconds
    Sleep 10000
    hThread = 0
End Sub
 

Dreamora

BeitragDo, Feb 07, 2008 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast seine Frage schon gelesen oder?

Es ging nicht drum wie es geht, sondern ob es geht.
Und die antwort ist klar Nein sofern die Threads irgendwie (egal in welcher weise) direkt mit BM verbunden sind anstatt über ein "zugriffsinterface" von BM getrennt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Markus2

BeitragDo, Feb 07, 2008 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
@Dreamora
er bindet doch auch C Quelltexte ein wo Funktionen
aus Blitz aufgerufen werden .
Das ist doch ne Trennung .
Und in dem C Teil kann eine Funktion als Thread laufen .
Das man sein Programm abschießen kann wenn man nicht
weiß was man tut ist klar .
Und weil ich der Meinung bin das es geht halt das Beispiel aus der API Guide .
Mit Multithreading in VB habe ich auch schon meine Erfahrung gesammelt,
war allerdings nur für ein Projekt .
 

Dreamora

BeitragDo, Feb 07, 2008 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie gesagt:

Weder darf BlitzMax auf daten zugreifen die von einem eigenen Thread genutzt werden, noch darf dieser eigene thread auf BlitzMax funktionalität zurückgreifen (Callbacks)

Beides ist für den GC instantan tödlich.

Das einzige was du machen kannst und darfst ist C++ source einbinden und nutzen (sei es für callbacks oder aufrufe) der keinen eigenen thread nutzt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group