Tutorial de Vb.net 6-16 Sincronización de subprocesos usando declaraciones SyncLock

Vb Net Tutorial 6 16 Synchronizing Threads Using Synclock Statements

Mira el siguiente código:

|_+_|

Los resultados obtenidos pueden ser los siguientes, los lugares clave que marqué con un recuadro rojo:





Puede ver que la salida anterior es confusa. Esto se debe a que el hilo está controlado por el sistema. No sabemos dónde está. El sistema detiene el subproceso 1 e inicia el subproceso 2, luego detiene el subproceso 2 y cambia el subproceso en ejecución. .... Originalmente quería generar 100 0, 100 1 ... (¿Qué? ¿Quieres generar en el orden de 0 a 5? Solo hablaré sobre cómo generar 100 0, 100 1 ... no para mencionar el pedido) Este código no se puede implementar, y tal vez sea correcto ocasionalmente.



Para resolver el problema anterior, debe utilizar la instrucción SyncLock.
MSDN: la instrucción SyncLock garantiza que varios subprocesos no ejecuten bloques de instrucciones al mismo tiempo. SyncLock evita que subprocesos individuales entren en el bloque de declaraciones hasta que ningún otro subproceso lo haya ejecutado. El uso más común de SyncLock es proteger los datos para que no se actualicen simultáneamente por varios subprocesos. Si las declaraciones que manipulan los datos deben completarse sin interrupción, colóquelas en un bloque SyncLock. El método de uso es el siguiente:

|_+_|

tienes que estar consciente de es,Lockobject debe cumplir las siguientes condiciones:
1. El valor no puede ser Nada
2. No debe utilizar la palabra clave Me para proporcionar un objeto de bloqueo, por ejemplo, datos.
3, debe ser un tipo de referencia, no utilice un tipo de valor como Integer
4, deben definirse como variables que se pueden compartir entre subprocesos, el siguiente ejemplo se definirá como una variable de nivel de módulo

Según la introducción anterior, el código modificado es el siguiente:



Defina una variable de nivel de módulo:

|_+_|

Programa principal modificado:

|_+_|

Bloqueamos el código de bloque de bucle del hilo secundario para asegurarnos de que esté completo. Los resultados son los siguientes:

También se enfatiza que aunque el subproceso se llama en el orden de 0-5, el orden de salida no controla. A menos que esté implementado por otro código, deje que todos lo escriban.

Debido a C # y vb bajo la plataforma .net .NETO Muy similar, este artículo también puede proporcionar una referencia para los entusiastas de C #.

Más información vb .neto Conocimiento, por favor vea Directorio de tutoriales de vb.net