PDA

Ver la Versión Completa : [Duda] Variables globales en multisesión: son seguras?


Adrianeloy
20 de mayo de 2016, 17:30
Todos mis sistemas corren en "duplicado" (permito abrir multiples sesiones del ejecutable en una misma compu tadora)

A veces he detectado errores al grabar registros, muuuy esporádicos. Por más que reviso la apertura de archivos, el bloqueo de registros, etc... no hallo errores de programación.

Teniendo en cuenta que son muchos los usuarios en mi empresa, y casi todos abren varias veces el ejecutable en su puesto, pregunto...

Alguien tiene la seguridad de que las variables globales y/o externas conserven su valor dentro de cada sesión? Es imposible que tomen el valor de otra sesión, o bien pierdan su valor?

Todos vemos que a veces las ventanas de Windows (cualquiera de ellos) se cierran con algun error exclusivo de ese sistema operativo, sobre todo cuando la maquina anda floja de memoria o con la memoria saturada. Y a veces, más que cerrarse, se reabren sin mostrar algunas partes de la pantalla o con botones, tablas, pictures visualmente "escondidos".

Nada mas, gracias totales y perdon por esta duda que puede ser muy estúpida y sin fundamento alguno...
:o

Kuk
20 de mayo de 2016, 17:45
Adrianeloy, tú no usas PWC3? Si es así, cómo logras abrir varias instancias del mismo ejecutable? Porque no lo permite...

En cuanto a tu pregunta, dentro del mismo flujo de ejecución (proceso) las variables EXTERNAL son accesibles desde cualquier punto, y de hecho para eso se han creado. Cada instancia del programa es un proceso. Pero los procesos son controlados por el SO, y justamente para obtener los datos de otro proceso, hay que hacer varias llamadas WinAPI para incrustarse dentro del otro proceso y obtenerlos. Es bastante difícil, precisamente porque cada proceso está encapsulado en un flujo separado.

Con lo cual, dudo mucho que sea posible por un Bug. Si se trata de temas tratados por el Run-Time de Fujitsu, ahí puede haber algún Bug esporádico, pero el SO Windows se basa en este mecanismo desde sus raíces, así que no creo que pueda tener un Bug de semejante calibre a estas alturas, y que no se haya detectado hasta ahora.

Both processes and threads are independent sequences of execution. The typical difference is that threads (of the same process) run in a shared memory space, while processes run in separate memory spaces.

Hrmcobol
21 de mayo de 2016, 03:22
Estimados, creer en la infalibilidad de los procesos es una utopía, ya que estos procesos están desarrollados por programadores como nosotros. Por lo tanto existe la posibilidad de un error.
Ahora bien si es como tu dices Adrian, en la multiplicidad de procesos mas la hiperactividad de usuarios, yo creo por la experiencia en Años de programador, que debes tener alguna condición que tu no detectas, y se produce el error de grabación de registros.
Hasta ahora nunca le gane a los compiladores y sistemas operativos, siempre el error fue mio. (estos tienen miles de horas de desarrollo y puesta a punto).
Yo reescribiría las rutinas de grabación y procesos de ingreso de datos.
Saludos y Suerte

PD.: Buen fin de semana para todos !!

Dasije
22 de mayo de 2016, 16:44
Hola buenas.

Adrianeloy, se refiere de utilizar la aplicación en terminal server, hay si se puede ejecutar instancias por separadas por cada sesión de usuario, es como el terminal de linux conectados por varios usuarios.

Antes de nada, hay que preguntarse, si el servidor es de marca o clónico, si tiene memoria ram ECC, si la placa lo soporta, etc.

Lo digo, porque no es lo mismo un servidor de marca o no, ya que me he encontrado en servidores clonicos donde no dejaba de aparecer problemas de pantalla azul y fallos sin sentido en el RAID.

¿Qué sistema operativo Windows tiene el servidor?, recuerdo que en Windows 2000 tenía problemas relacionados con las sesiones de terminal server con los archivos indexados.

Saludos.

Adrianeloy
23 de mayo de 2016, 19:18
Dasije, voy a consultar con el "encargado de redes", que administra el servidor y que actualmente está de licencia por una intervencion quirurgica sencilla... Yo no tengo acceso al mismo, me dedico exclusivamente a programar. Sé que tenía Windows server 2000, pero que cambió a 2003 hace poco, pero clónico y con poca capacidad en su disco.

Hrmcobol, dediqué un par de días a revisar y hacer reportes de mis programas y tenes razón, ya encontré y reparé dos errores de programación míos...

Kuk, el power cobol v3 tiene la posibilidad de ejecutar en duplicado, en Option\Run, tildando la opcion de "Execute in duplicate" y luego compilando.

Hrmcobol
23 de mayo de 2016, 20:12
Es Así adrian, Las Com****doras son como las Mujeres, siempre tienen razón. JAJAJAJ
Saludos