Articles of multihilo

C # Tarea que devuelve un valor.

Estoy tratando de ejecutar una función en una tarea pero estoy haciendo algo mal. Heres un ejemplo: var t = Task.Factory.StartNew(() => GenerateResult(2)); static int GenerateResult(int i) { return i; } Al final Console.WriteLine(t); Esto devuelve: System.Threading.Tasks.Task`1 [System.Int32] Quiero que sea 2. ¿Qué estoy haciendo mal aquí? : /

¿Qué tipo de mecanismo de locking utiliza la instrucción de locking?

¿La palabra clave de locking c # usa un enfoque de ‘rendimiento’, ‘locking de giro’ o híbrido para manejar la contención? Hasta ahora mis búsquedas en la statement de locking de .net no han encontrado una respuesta. Voy a publicar si encuentro más. Hasta ahora, todo lo que pude encontrar es cuándo debería uno usar […]

¿Qué tan cerca del hilo de BackgroundWorker cuando la aplicación está desactivada?

Creo un hilo con BackgroundWorker , y en el bucle verifico cada vez si CancellationPending es verdadera o no, como esto: public MainPage() { InitializeComponent(); bw = new BackgroundWorker(); bw.WorkerReportsProgress = true; bw.WorkerSupportsCancellation = true; bw.DoWork += new DoWorkEventHandler(bw_DoWork); bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted); } private void ButtonStart_Click(object sender, RoutedEventArgs e) { […]

¿Cómo obtener el conteo de hilos activos?

Tengo un progtwig que llama a una biblioteca de C ++. El proceso del progtwig tiene una gran cantidad de hilos (50 – 60). La mayoría de ellos parecen estar creados en C ++ y sospecho que la mayoría están suspendidos / en espera. ¿Cómo encuentro cuántos de estos hilos están activos en un momento […]

Sincronización de hilos. ¿Por qué exactamente este locking no es suficiente para sincronizar los hilos

Posible duplicado: Sincronización de hilos. ¿Cómo exactamente el locking hace que el acceso a la memoria sea “correcto”? Esta pregunta está inspirada en esta. Tenemos una clase de prueba siguiente class Test { private static object ms_Lock=new object(); private static int ms_Sum = 0; public static void Main () { Parallel.Invoke(HalfJob, HalfJob); Console.WriteLine(ms_Sum); Console.ReadLine(); } […]

¿Puede la precisión de punto flotante depender del hilo?

Tengo una clase vectorial 3D pequeña en C # 3.0 basada en estructura que usa el doble como unidad básica. Un ejemplo: el valor y de un vector es -20.0 straight Resto un vector con un valor de y 10.094999999999965 El valor para y que yo esperaría es -30.094999999999963 (1) En vez de eso, obtengo […]

¿Cuándo tiene sentido Thread.CurrentThread.Join ()?

¿Cuál es el efecto de llamar a Thread.CurrentThread.Join (), y si / cuándo tendría sentido llamarlo?

Thread.IsAlive y Thread.ThreadState == ThreadState.Running

Estoy usando para verificar la condición de un hilo con if(Thread.IsAlive) . Un formulario se está ejecutando en este hilo. En ocasiones durante la ejecución, aunque el formulario permanece abierto, la llamada a Thread.IsAlive parece estar evaluándose como falso. Pensé realizar la misma comprobación con if(Thread.ThreadState==ThreadState.Running) . ¿Es la forma correcta de hacerlo? Si no, […]

¿Cómo enumerar hilos en .NET usando la propiedad Nombre?

Supongamos que empiezo dos hilos como este: // Start first thread Thread loaderThread1 = new Thread(loader.Load); loaderThread1.Name = “Rope”; loaderThread1.Start(); // Start second thread Thread loaderThread2 = new Thread(loader.Load); loaderThread2.Name = “String”; loaderThread2.Start(); ¿Hay alguna manera de que pueda enumerar los subprocesos utilizando su propiedad Nombre? Quiero ser capaz de verificar si todavía se está […]

Colecciones concurrentes comiendo demasiado cpu sin Thread.Sleep

¿Cuál sería el uso correcto de cualquiera de las opciones, BlockingCollection o ConcurrentQueue para que pueda sacar a colación libremente los elementos sin quemar la mitad o más de su CPU utilizando un subproceso? Estaba ejecutando algunas pruebas con 2 subprocesos y, a menos que tuviera un Thread.Sleep de al menos 50 ~ 100ms, siempre […]