mikeash.com: Friday Q&A 2009-01-16
This week I'll be taking Eren Halici's suggestion to discuss the various ways to do interprocess communication on OS X.

IPC is an interesting and sometimes complicated topic, especially on OS X, which has a veritable zoo of IPC techniques. It can be hard to decide which one to use, and sometimes hard to even know what's available.
osxdev  ipc  mach  cfmachport  nsmachport 
12 weeks ago
Shredder Computer Chess Download - Download
Download link for UCI Chess Engine Protocol specifications
chess  uci  specification 
march 2017
Dispose Pattern
✓ DO implement the Basic Dispose Pattern on types containing instances of disposable types. See the Basic Dispose Pattern section for details on the basic pattern.

✓ DO implement the Basic Dispose Pattern and provide a finalizer on types holding resources that need to be freed explicitly and that do not have finalizers.

✓ CONSIDER implementing the Basic Dispose Pattern on classes that themselves don’t hold unmanaged resources or disposable objects but are likely to have subtypes that do.

✓ DO declare a protected virtual void Dispose(bool disposing) method to centralize all logic related to releasing unmanaged resources.

✓ DO implement the IDisposable interface by simply calling Dispose(true) followed by GC.SuppressFinalize(this).

X DO NOT make the parameterless Dispose method virtual.

X DO NOT declare any overloads of the Dispose method other than Dispose() and Dispose(bool).

✓ DO allow the Dispose(bool) method to be called more than once. The method might choose to do nothing after the first call.

X AVOID throwing an exception from within Dispose(bool) except under critical situations where the containing process has been corrupted (leaks, inconsistent shared state, etc.).

✓ DO throw an ObjectDisposedException from any member that cannot be used after the object has been disposed of.

✓ CONSIDER providing method Close(), in addition to the Dispose(), if close is standard terminology in the area.

X AVOID making types finalizable.

X DO NOT make value types finalizable.

✓ DO make a type finalizable if the type is responsible for releasing an unmanaged resource that does not have its own finalizer.

✓ DO implement the Basic Dispose Pattern on every finalizable type.

X DO NOT access any finalizable objects in the finalizer code path, because there is significant risk that they will have already been finalized.

✓ DO make your Finalize method protected.

X DO NOT let exceptions escape from the finalizer logic, except for system-critical failures.

✓ CONSIDER creating and using a critical finalizable object (a type with a type hierarchy that contains CriticalFinalizerObject) for situations in which a finalizer absolutely must execute even in the face of forced application domain unloads and thread aborts.
idisposable  C# 
march 2017
« earlier      
3d accessibility acm adhoc agile airport ajax algorithm algorithms android androiddev apache api appengine apple applescript architecture arduino arm art assembly astronomy atari atlanta audio aviation barcode blog bluetooth book boost build business c++ ccw chess clock cocoa cocos2d comics concurrency corydoctorow crewpairing css d80 database date debugging design development diff django documentation drupal ebook eclipse education emacs embedded erlang f# faq fits flash flickr fonts forth free freebsd fsm functional funny gallery gamedev gaming generative georgia gis git google graphics guitar hardware haskell history howto html html5 http humor idpa ieee installer interview ios iosdev ipad iphone ipod ipsc j2me java javascript jazz jcp joelonsoftware jquery json kayak kernel language law lighting linux lisp logging mac macosx map maps menubarcountdown microsoft mobile msdn music mvvm nationalgeographic nginx nikon nslog objective-c objectivec ocaml omg opengl opensource osx osxdev parsing patterns pdf performance photo photography photos photoshop php physics podcast politics posix productivity programming protocol pthreads pyobjc python razr reference rest reverseengineering rfc robotics rs232 rsync ruby running rust satellite scala scheme science scm security selfdefense selinux serial sf shell shooting simulation skydiving sling soap software space specification sql sqlite squeak ssh standard standards starwars statistics story strobist stroustrup subversion svm svn swift tdd testing threads tinybasic toread towatch trafficengineering tutorial twitter typography ubuntu ui uikit uml unicode unittest unix usability usb ux versioncontrol video visualization visualstudio vmware w3c weather web webdesign webdev webkit webservices wiki win32 windows windows8 wpf xcode xml xp

Copy this bookmark: