Commit Graph

2911 Commits

Author SHA1 Message Date
490aab08bc iterator: retain rvalue sources when constructing zip/izip 2018-03-23 16:41:11 +11:00
86b1fa38c7 variadic: add filter call 2018-03-23 16:40:30 +11:00
cceadcba40 tuple/value: add explanatory comment for map 2018-03-23 16:39:35 +11:00
af77aad894 extent/region: simplify iteration over ranges 2018-03-23 16:38:54 +11:00
7568e34649 view: don't force const iterators for cbegin/cend 2018-03-23 14:40:40 +11:00
58843fb0c7 view: use trivial constructors and assignment
this allows us to fulfil the requirements of TriviallyCopyable which is
useful particularly in dumb allocators and job queues.
2018-03-23 14:10:57 +11:00
36f4ba035c thread: rename thread primitives from job namespace 2018-03-23 14:10:20 +11:00
6cd2bef17d tap: send output to the recorded stream, not cout 2018-03-22 16:11:13 +11:00
2d7e3e5d7d build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
40da3f8df7 singleton: add trivial implementation 2018-03-22 15:06:48 +11:00
9bfefb3dab job/queue: use a reaper thread to clear finished tasks
clearing the tasks on the worker threads can cause the queue to stall
while the cookie is notified, released, and deleted. we punt the cleanup
off to a reaper thread so that the workers can continue.
2018-03-22 14:59:03 +11:00
3689b08535 parallel/queue: add nodiscard to push/pop
Users _must_ check the return value otherwise they've no indication
whether anything happened... This is a pretty common mistake because it
looks a lot like a typical push/pop operation.
2018-03-22 14:57:34 +11:00
4f4b812356 parallel/queue: add capacity query 2018-03-22 14:57:24 +11:00
53255ca4a0 job/semaphore: add multi-release 2018-03-22 13:39:16 +11:00
848b9951e8 job/semaphore: add multi-acquire 2018-03-22 13:37:28 +11:00
804b2263b8 parallel/queue: rename the queue type 2018-03-22 13:22:27 +11:00
d47f9e0cce debug: write threadid to trace output 2018-03-22 13:20:23 +11:00
370488c498 coord: test coords are trivial types 2018-03-22 13:20:00 +11:00
88d514aa9c pool: launder the allocated pointers 2018-03-22 13:10:18 +11:00
7fc51aa151 parallel/queue: use representative name for class 2018-03-22 13:05:51 +11:00
fc148fa7a4 parallel/queue: comments and type checks 2018-03-22 13:02:51 +11:00
4773e4be21 parallel: initial single-producer/multiple-consumer queue 2018-03-21 18:53:24 +11:00
82d63f68b1 job/flag: improved parallelism test 2018-03-20 18:02:20 +11:00
e120540bb9 job: add forward declarations 2018-03-20 15:01:23 +11:00
2508c5cc71 test: read TAP status before exit 2018-03-20 14:50:46 +11:00
197160daba tap: check the status variable is read 2018-03-20 14:50:32 +11:00
0cf530c2de debug: use macros for DEBUG_ONLY macro 2018-03-20 14:49:46 +11:00
8212048750 maths: add fast approximations WIP 2018-03-20 13:35:10 +11:00
5d02171a6f maths: add relatively_equal comparator 2018-03-20 13:35:10 +11:00
84f8600f85 view: add const array ref template deduction 2018-03-20 13:35:10 +11:00
341907ac79 coord/simd: add more sse operations 2018-03-20 13:35:10 +11:00
7708b12c37 bitwise: add 'from_bits' integer extraction
constructs an integer from range of indices over a bitfield
2018-03-20 13:35:10 +11:00
68faa8838e cpuid: add initial trivial CPUID queries 2018-03-18 17:29:44 +11:00
b307ab935d coord/simd: add initial simd tests 2018-03-16 11:10:44 +11:00
af5da5b846 maths: use double negation for equality bool conversion 2018-03-16 11:10:08 +11:00
5dda5d130a spinlock: reduce iterations for testing
4096 iterations should be enough to demonstrate any issues, but still
execute quickly enough for everyday testing
2018-03-15 23:49:12 +11:00
e1d87afe37 spinlock: prefer weak xchg when spinning 2018-03-15 23:48:50 +11:00
12d401b98b tuple/variadic: split into type/value/pack operations 2018-03-15 23:48:21 +11:00
f3f3666877 job/queue: rework locking for reliability 2018-03-15 15:25:19 +11:00
0c824919de job/monitor: add simple monitor adapter 2018-03-15 15:25:18 +11:00
5228cecbfb traits: add is_same_template_template trait 2018-03-15 15:25:18 +11:00
cbe439b8e9 tuple: add index parameter helper for parameter packs 2018-03-15 15:25:18 +11:00
7ce2f5454d pool: correctly forward constructor parameters 2018-03-15 15:25:18 +11:00
bafe71b3ab coord/ops: add `all' overload for scalar bool 2018-03-15 15:25:18 +11:00
deb787847c maths: allow mix's t to lie outside [0,1] a little 2018-03-15 15:25:18 +11:00
c9dea18881 job/semaphore: add a basic semaphore implementation 2018-03-15 15:25:14 +11:00
4154066a0e job/ticketlock: add a trivial ticketlock 2018-03-15 15:23:43 +11:00
f04e6e4de5 job/spinlock: add simple spinlock implementation 2018-03-15 15:23:43 +11:00
3a26a98db7 job/flag: add a one off event object 2018-03-15 15:23:43 +11:00
1fd58c8967 job/event: a simple reusable edge triggered event 2018-03-15 15:23:43 +11:00