On OS X, dining_philosophers doesn't build: #include <unistd.h> to use sleep().
(Added) seismic is still invisible with argument 300... or maybe I just blinked at the wrong time.
About Dining Philosophers, could you tell me which OS/X and clang versions you have problems with? I've tried two different versions (
Darwin 13.1.0 Darwin Kernel Version 13.1.0: Thu Jan 16 19:40:37 PST 2014; root:xnu-2422.90.20~2/RELEASE_X86_64 x86_64; Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
Darwin 12.5.0 Darwin Kernel Version 12.5.0: Sun Sep 29 13:33:47 PDT 2013; root:xnu-2050.48.12~1/RELEASE_X86_64 x86_64; Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn
and haven't found the error.
Thanks and Regards,
I'm seeing "Kernel Version: Darwin 13.1.0" (as in your first version) and "clang-503.0.40" (as in your second version).
"man 3 sleep" mentions "#include <unistd.h>", and if I add that to examples/graph/dining_philosophers/dining_philosophers.cpp it solves the problem "dining_philosophers.cpp:219:5: error: use of undeclared identifier 'sleep'".
(Added) Note that include/tbb/machine/gcc_generic.h includes this header (not immediately obvious why?), but it's not used with Clang as the compiler (verified for "make compiler=clang examples" by adding "#ifndef __GNUC__ / #error / #endif"). I couldn't immediately find the cause of the problem or of its sudden manifestation, but it (now?) also occurs for tbb42_20140122oss (previous update?), which I presume I would also have tested on OS X (or not?), so this may be caused by a recent change in the environment rather than by a change in TBB (meaning I should probably have reported it in a different thread). But it also seems better to just add "#include <unistd.h>" immediately before "#define SLEEP(a) sleep(a)" and reserve one's curiosity for more interesting subjects.
Thanks for the extra information. I will fix it by using the tbb_thread method for sleep; seems like it will reduce the complexity of the test and remove the need to update it further.
If you want to go there, you could do even better by reviewing all uses of sleeping. For example, there are 4 independent but (nearly?) identical definitions of a function MilliSleep(), 3 of rt_sleep(), and also Harness::Sleep(), that are comparable to SLEEP(): functions instead of a macro, more precise by a factor 1000, but all with similar or even greater complexity for the same simple functionality. It's hard to keep a DRY eye looking at that situation... :-)