He querido comprobar si puedo ejecutar subprocesos Threads simultáneamente:
Código
using System; using System.Windows.Forms; using System.Threading; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { T1.Start(); T2.Start(); } private void Form1_Shown(object sender, EventHandler e) { } public static void Thread_1() { MessageBox.Show("Thread_1"); } public static void Thread_2() { MessageBox.Show("Thread_2"); } } }
Se supone que con Threads pueden ejecutarse varios subprocesos al mismo tiempo. La cosa es que siendo la programación siempre lineal, o sea línea por línea secuencialmente, primero se ejecuta el subproceso T1.Start() y después T2.Start().
En el código aparecerán un cuadro de mensaje y después el otro, a veces dará la sensación que se muestran simultáneamente pero siempre quedará el cuadro de mensaje "Thread_1" debajo de "Thread_2" porque siempre se muestra primero el Thread_1
La idea era mostrar a tiempo real varios reacciones químicas simuladas con barra de progreso y gráficos paralelos con ajustes de parámetros. Unifiqué todo en un solo proceso estableciendo los valores de antemano, y en un mismo proceso se va mostrando los cambios a tiempo real, sin embargo y creo que es una "ilusión" de simultaneidad ya que para las propiedades de objetos y valores en variables siempre se aplican un valor al primero y luego al segundo secuencialmente. Lo que ocurre es tan rápido que crea es ilusión de simultaneidad pero en realidad no esa así.
Aún teniendo un procesador de varios núcleos ¿Cómo se puede aprovechar esa capacidad del CPU a nivel de código?
He usado 'Buscar' de este foro pero no he encontrado nada al respecto aunque seguro que hay o ya salió el tema.
Saludos