Wow Wily Dev - Nice Analysis Bro! I agree with everything you said. That sample code though I tossed out has been pretty sweet but I also cut out a portion of those routines for fear they might be confuse. I don't think it would of confused you... though without full source they would at least of left folks most likely scratching their heads and clicking EMail Delete button quickly.
In those functions, the code I cut out is a memory based version of the same thing that doesn't hit critical sections at for the very reasons you cited - timing changes in code plus the mechanics of spinning in a critical - potentially "hiding" the real issue at hand by making things play nicer by shear "accident". I definitely think you have been reading up on your threading - you'd appreciate that I have a thread monitor that can look at those memory based structues for each thread and I can zero in on "stuck threads" and interrogate where they are, where they were when they got stuck etc without reading log files. As for your global logging comment - I do have a global logging method - but being filebased - it needs a form of serialization and having multiple threads hitting it, well... it lost's value except as an error log. If you look at those code snips there are similar functions named DebugIn and DeBugOut - they are wrappers to a central logging system - that just do the nice Nest looking output like DBIN and DBOUT do in their output. I also didn't use a stack for the file stuff - and you're right - no checking is done - it was a lean means to and end - which did it's job many times over - points me to trouble spots pretty quick. The compiler directives are ugly - and your recommendation concerning them is sound. I tend to use them a lot because I like to be able to turn on and off entire subsystems in such a way they are not compiled in. Example - My Application server can be compiled pretty small with the "Plain Vanilla WebServer" configuration, or a full fledged self contained CRM system + integration tools + application server functionality - one code base. BEst idea? Maybe not. Programmer expensive? I won't deny that - but those are the kind of code constructs I don't mind cutting and pasting... I also tend to only implement those code bits in code that in the mission critical path to a suspected issue I'm after. Your analysis was such that I thought a reasonable response was deserved - nice to know we got quite the code gurus on the mailing list - I love Synapse - It's pretty slamming I'd say. the next areas I'm hoping to be able to get to with it are 64bit, Ip6, and making a SSL certificate work without making the browser refuse to serve my ssl stuff or looking like my server is death incarnate trying to burn your PC LOL... (I get it to encrypt but haven't had the time to figure out how to get ssl certs working like they should). --Jason ------------------------------------------------------------------------------ The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away. http://p.sf.net/sfu/theplanet-com _______________________________________________ synalist-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/synalist-public
