topo ha scritto:
ma parallelizzabili6à intendi che due o più parti di programma vengono eseguiti in simultanea o quasi ?? che possono accedere alla stessa risorsa contemporaneamente ecc
Esatto! Ormai se vuoi programmare bene devi programmare così!
topo ha scritto:
esistono i magnifici thread c he hanno diverse funzioni ... e sono davvero comodi
i tipi che ho visto possono funzionare assieme in diversi modi
- coda dei thread in esecuzione
- coda dei thread pronti in attesa di esser mandati in esecuzione su una coda di esecuzione
- N code dei thread bloccati per ogni risorsa condivisa in attesa di accedere ad una risorsa condivisa ovvero che questa risorsa sia disponibile
In C lo sapevo già fare, ma in java c'è qualcosa?
PS. I tuoi programmi giravano entrambi in una frazione di secondo, allora li ho modificati così:
Codice:
#include <stdio.h>
#include <time.h>
int main ( ) {
time_t now = time ( NULL );
printf ( ctime ( &now ) );
for ( int i = 0; i < 1000000000; i ++ ) {
for ( int j = 0; j < 1000000000; j ++ ) {
for ( int k = 0; k < 1000000000; k ++ ) {
for ( int l = 0; l < 1000000000; l ++ ) {
for ( int m = 0; m < 1000000000; m ++ ) {
// if ( ! ( i % 100000000 ) )
// printf ( "%d\n", i )
} } } } }
printf ( "Finito!\n\n" );
now = time ( NULL );
printf ( ctime ( &now ) );
return 0;
}
E similmente java. Il programma in C continua a girare in una minuscola frazione di secondo, il java invece l'ho fermato dopo 5 minuti che continuava a runnare...
Ho compilato il c con g++, il java con javac, la macchina è un I5@2.66GHz.. però considera che so compilare molto meglio con g++ che con javac.