Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cuáles son las conexiones y diferencias entre UNIX, Linux y Windows? Los expertos están aquí.

¿Cuáles son las conexiones y diferencias entre UNIX, Linux y Windows? Los expertos están aquí.

Las personas que están familiarizadas con la programación WIN32 deben saber que el método de gestión de procesos de WIN32 es muy diferente al de Linux. En UNIX, solo existe el concepto de proceso, pero en WIN32 existe el concepto de "hilo". ¿Qué tienen exactamente Linux y WIN32 aquí?

Los procesos/hilos en WIN32 se heredan de OS/2. En WIN32, un "proceso" es un programa y un "hilo" es un "hilo" de ejecución en un "proceso". Desde un punto de vista central, el multiproceso de WIN32 no es muy diferente de Linux. En WIN32, los subprocesos son equivalentes a los procesos en Linux y son el código real que se ejecuta. Sin embargo, en WIN32, los subprocesos del mismo proceso comparten los segmentos de datos de cada uno. Ésta es la mayor diferencia con los procesos de Linux.

El siguiente programa muestra cómo el proceso WIN32 inicia un hilo.

int g;

DWORD WINAPI ChildProcess( LPVOID lpParameter ) {

int i; ; 1000; i) {

g;

printf( "Este es el hilo secundario: d", g

}

ExitThread( 0 );

};

void main()

{

int

int i;

g = 0;

Crear un nuevo hilo.

CreateThread( NULL, 0, ChildProcess, NULL, 0, & threadID

for ( i = 1; i lt; 1000; i) {

< p); >g;

printf( "Este es el hilo principal: d", g

}

}

}< / p>

En WIN32, los subprocesos se crean utilizando la función CreateThread. A diferencia de la creación de procesos en Linux, los subprocesos WIN32 no comienzan a ejecutarse desde el momento en que se crean. En cambio, CreateThread especifica una función y luego el subproceso comienza desde esa función. . correr. El hilo comenzará a ejecutarse desde esta función. Este programa, al igual que el programa UNIX anterior, consta de dos subprocesos, cada uno de los cuales imprime 1000 mensajes. threadID es el número de subproceso del subproceso secundario, y la variable global g es compartida por el subproceso secundario y el subproceso principal. Esta es la mayor diferencia con Linux. Se puede ver que los procesos/subprocesos de WIN32 son más complicados que Linux. No es difícil implementar un subproceso similar a WIN32 en Linux. Simplemente pase por la bifurcación, deje que el proceso secundario llame a la función ThreadProc y abra el área de datos que disfruta. el *** para variables globales. Sin embargo, funciones similares a fork no se pueden implementar en WIN32. **Bajo WIN32, los programadores pueden olvidar fácilmente que los datos entre subprocesos se *comparten. Después de que un subproceso modifica una variable, otro subproceso la modifica, causando problemas en el programa. Pero en Linux, debido a que las variables no se controlan, pero el programador especifica explícitamente los datos que se controlarán, el programa es más claro y seguro.