Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Richiamare dll in multithreading
Forum - C# / VB.NET - [VB.NET] Richiamare dll in multithreading

Avatar
Furion (Normal User)
Rookie


Messaggi: 51
Iscritto: 31/01/2008

Segnala al moderatore
Postato alle 12:34
Domenica, 31/01/2010
Ciao ragazzi, allora il titolo non è molto espressivo, cmq il problema è questo. Ho scritto una semplice dll in C in cui ci sono due funzioni. Una di queste prende in input un'array di interi, li elabora e poi li ritorna. Nel main, scritto in VB, ho una matrice di interi e, riga per riga, li passo alla dll. Mi sono accorto che potrei accorciare i tempi costruendo un thread per ogni riga della matrice, in modi da richiamare la dll in parallelo. Ora la domanda è: si può fare una cosa del genere, o è solo una mia fisima mentale? Se sì, molto probabilmente dovrò cambiare il codice della dll. Cosa devo cambiare?

Se serve posto la struttura della dll, il main è un semplicissimo ciclo for, quindi non penso serva. Grazie e a presto ^_^


Il mondo è il cancro, io la cura...
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5640
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 12:39
Domenica, 31/01/2010
Sicuramente, maggiori dettagli sul codice non farebbero male, per capire meglio ...

Ma la domanda principale è ... perchè non scrivi tutto il codice in VB utilizzando i thread di VB ?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Gianluca87 (Ex-Member)
Expert


Messaggi: 300
Iscritto: 16/11/2008

Segnala al moderatore
Postato alle 17:16
Domenica, 31/01/2010
occhio ci sono dei limiti sui thread concorrenti che puoi eseguire...
apri google... cerca ThreadPool ;-)


a domanda precisa, risposta precisa...
a domanda generica, risposta generica...
PM Quote
Avatar
Furion (Normal User)
Rookie


Messaggi: 51
Iscritto: 31/01/2008

Segnala al moderatore
Postato alle 18:31
Domenica, 31/01/2010
@nessuno
Allora ho dovuto scrivere la dll in C perchè queste operazioni che faccio sugli interi sono di tipo bitwise, e in C sono infinitamente più veloci: all'inizio avevo scritto tutto in VB, però trasformando la dll in C ho ridotto i tempi di esecuzione ad un terzo. La struttura della dll è la seguente (scritta in C# per la precisione)

Codice sorgente - presumibilmente C++

  1. namespace MioSpazio
  2. {
  3.     public class Classe
  4.     {        
  5.         public static void funzione(ref byte[] array){
  6.             // Corpo della funzione
  7.         }
  8.  
  9.         // Qui c'è un altra funzione
  10.     }
  11. }



@Gianluca87
Per limiti intendi un numero massimo (o roba del genere)? Se è così a me basta poter eseguire 3-4 thread insieme. Cmq ora guardo

Ultima modifica effettuata da Furion il 31/01/2010 alle 18:32


Il mondo è il cancro, io la cura...
PM Quote
Avatar
Gianluca87 (Ex-Member)
Expert


Messaggi: 300
Iscritto: 16/11/2008

Segnala al moderatore
Postato alle 20:43
Domenica, 31/01/2010
esattamente c'è un numero limite di thread che puoi eseguire per core oltre la quale le performance calano drasticamente ora non ricordo il link ma è documentato molto bene


a domanda precisa, risposta precisa...
a domanda generica, risposta generica...
PM Quote
Avatar
Furion (Normal User)
Rookie


Messaggi: 51
Iscritto: 31/01/2008

Segnala al moderatore
Postato alle 22:43
Domenica, 31/01/2010
Si ma tanto come ho detto a me bastano 3-4 thread, non di più. Cmq, tornando al problema originario, in java dovrei modificare la classe della dll dicendo che implementa Runnable. Qui devo fare una cosa simile?

Ultima modifica effettuata da Furion il 31/01/2010 alle 22:51


Il mondo è il cancro, io la cura...
PM Quote