¿Entonces usando DLLCC podés asegurar atomicidad de grano grueso? Te
pregunto porque nunca usé DLLCC y no entiendo si tu problema es esencialmente de concurrencia, de convención de llamadas o portabilidad (me imagino que ese _wincall no funciona en Linux :) Saludos, Hernán El día 30 de agosto de 2010 18:17, Andres Valloud <[hidden email]> escribió: > Por eso dije que en DLLCC existe el pragma _wincall. El problema, sin > embargo, es que a veces tenes que llamar a WSAGetLastError(), o a > CuchuflitoGetLastError(), o la convencion de indicacion de errores es > diferente para un DLL que hizo algun otro, y en general no se puede > andar agregando _mongocall, _juanperezcall y otros pragmas asi tan > facil. Para esos, lo mejor es escribir una primitiva chiquita en C y > llamarla desde la imagen. > > 2010/8/30 Hernán Morales Durand <[hidden email]>: >> El día 28 de agosto de 2010 02:59, Andres Valloud >> <[hidden email]> escribió: >>> Yendo un poco mas a fondo... en general el tema con esos pragmas es >>> que no cubren todas las funciones habidas y por haber. Por ejemplo, >>> en Windows cuando usas sockets tenes que llamar a WSAGetLastError() en >>> vez de GetLastError()... se imaginan que no se puede andar agregando >>> _wsawincall, _pirulocall, _mongocall etc todo el tiempo para >>> contemplar todos los casos posibles. Por eso es que, si la cosa se >>> pone peliaguda, lo mejor es ni usar un FFI y escribir primitivas >>> directamente. >> >> ¿Qué te impide implementar un mecanismo de sincronización por >> exclusión mutua o por condición a nivel FFI? >> >> Hernán >> >> -- >> To post to this group, send email to [hidden email] >> To unsubscribe from this group, send email to [hidden email] >> >> http://www.clubSmalltalk.org > > -- > To post to this group, send email to [hidden email] > To unsubscribe from this group, send email to [hidden email] > > http://www.clubSmalltalk.org -- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org |
Con DLLCC y el pragma _wincall, si la funcion que llamas falla,
entonces la VM llama a GetLastError() y la primitiva que llama funciones de C falla devolviendo una pseudo variable temporal que contiene el codigo que devolvio GetLastError(). Como todo eso ocurre en el mismo thread, entonces es atomico. En *nix hay _syscall. 2010/8/30 Hernán Morales Durand <[hidden email]>: > ¿Entonces usando DLLCC podés asegurar atomicidad de grano grueso? Te > pregunto porque nunca usé DLLCC y no entiendo si tu problema es > esencialmente de concurrencia, de convención de llamadas o > portabilidad (me imagino que ese _wincall no funciona en Linux :) > Saludos, > > Hernán > > El día 30 de agosto de 2010 18:17, Andres Valloud > <[hidden email]> escribió: >> Por eso dije que en DLLCC existe el pragma _wincall. El problema, sin >> embargo, es que a veces tenes que llamar a WSAGetLastError(), o a >> CuchuflitoGetLastError(), o la convencion de indicacion de errores es >> diferente para un DLL que hizo algun otro, y en general no se puede >> andar agregando _mongocall, _juanperezcall y otros pragmas asi tan >> facil. Para esos, lo mejor es escribir una primitiva chiquita en C y >> llamarla desde la imagen. >> >> 2010/8/30 Hernán Morales Durand <[hidden email]>: >>> El día 28 de agosto de 2010 02:59, Andres Valloud >>> <[hidden email]> escribió: >>>> Yendo un poco mas a fondo... en general el tema con esos pragmas es >>>> que no cubren todas las funciones habidas y por haber. Por ejemplo, >>>> en Windows cuando usas sockets tenes que llamar a WSAGetLastError() en >>>> vez de GetLastError()... se imaginan que no se puede andar agregando >>>> _wsawincall, _pirulocall, _mongocall etc todo el tiempo para >>>> contemplar todos los casos posibles. Por eso es que, si la cosa se >>>> pone peliaguda, lo mejor es ni usar un FFI y escribir primitivas >>>> directamente. >>> >>> ¿Qué te impide implementar un mecanismo de sincronización por >>> exclusión mutua o por condición a nivel FFI? >>> >>> Hernán >>> >>> -- >>> To post to this group, send email to [hidden email] >>> To unsubscribe from this group, send email to [hidden email] >>> >>> http://www.clubSmalltalk.org >> >> -- >> To post to this group, send email to [hidden email] >> To unsubscribe from this group, send email to [hidden email] >> >> http://www.clubSmalltalk.org > > -- > To post to this group, send email to [hidden email] > To unsubscribe from this group, send email to [hidden email] > > http://www.clubSmalltalk.org -- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org |
Mmmm creo que no se entendió mi pregunta, no importa, gracias igual.
Saludos, Hernán El día 30 de agosto de 2010 14:02, Andres Valloud <[hidden email]> escribió: > Con DLLCC y el pragma _wincall, si la funcion que llamas falla, > entonces la VM llama a GetLastError() y la primitiva que llama > funciones de C falla devolviendo una pseudo variable temporal que > contiene el codigo que devolvio GetLastError(). Como todo eso ocurre > en el mismo thread, entonces es atomico. En *nix hay _syscall. > > 2010/8/30 Hernán Morales Durand <[hidden email]>: >> ¿Entonces usando DLLCC podés asegurar atomicidad de grano grueso? Te >> pregunto porque nunca usé DLLCC y no entiendo si tu problema es >> esencialmente de concurrencia, de convención de llamadas o >> portabilidad (me imagino que ese _wincall no funciona en Linux :) >> Saludos, >> >> Hernán >> >> El día 30 de agosto de 2010 18:17, Andres Valloud >> <[hidden email]> escribió: >>> Por eso dije que en DLLCC existe el pragma _wincall. El problema, sin >>> embargo, es que a veces tenes que llamar a WSAGetLastError(), o a >>> CuchuflitoGetLastError(), o la convencion de indicacion de errores es >>> diferente para un DLL que hizo algun otro, y en general no se puede >>> andar agregando _mongocall, _juanperezcall y otros pragmas asi tan >>> facil. Para esos, lo mejor es escribir una primitiva chiquita en C y >>> llamarla desde la imagen. >>> >>> 2010/8/30 Hernán Morales Durand <[hidden email]>: >>>> El día 28 de agosto de 2010 02:59, Andres Valloud >>>> <[hidden email]> escribió: >>>>> Yendo un poco mas a fondo... en general el tema con esos pragmas es >>>>> que no cubren todas las funciones habidas y por haber. Por ejemplo, >>>>> en Windows cuando usas sockets tenes que llamar a WSAGetLastError() en >>>>> vez de GetLastError()... se imaginan que no se puede andar agregando >>>>> _wsawincall, _pirulocall, _mongocall etc todo el tiempo para >>>>> contemplar todos los casos posibles. Por eso es que, si la cosa se >>>>> pone peliaguda, lo mejor es ni usar un FFI y escribir primitivas >>>>> directamente. >>>> >>>> ¿Qué te impide implementar un mecanismo de sincronización por >>>> exclusión mutua o por condición a nivel FFI? >>>> >>>> Hernán >>>> >>>> -- >>>> To post to this group, send email to [hidden email] >>>> To unsubscribe from this group, send email to [hidden email] >>>> >>>> http://www.clubSmalltalk.org >>> >>> -- >>> To post to this group, send email to [hidden email] >>> To unsubscribe from this group, send email to [hidden email] >>> >>> http://www.clubSmalltalk.org >> >> -- >> To post to this group, send email to [hidden email] >> To unsubscribe from this group, send email to [hidden email] >> >> http://www.clubSmalltalk.org > > -- > To post to this group, send email to [hidden email] > To unsubscribe from this group, send email to [hidden email] > > http://www.clubSmalltalk.org -- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org |
Free forum by Nabble | Edit this page |