Commit graph

73 commits

Author SHA1 Message Date
Simon Cruanes
f41887c367 refactor(pool): less locking, fix deadlock, more parallelism 2021-03-28 18:15:45 -04:00
Simon Cruanes
40c05cc7e3 wip: feat(pool): keep one idle thread
see #360; in combination with max_size=1 it means the pool contains
exactly one thread.
2021-03-28 18:15:45 -04:00
Simon Cruanes
8982f87ca7 perf: small optim in Pool.sequence_a 2021-03-28 18:15:45 -04:00
Simon Cruanes
dd1cf2a046 perf(pool): try to inline with_lock 2021-03-28 18:15:45 -04:00
Simon Cruanes
12ac1de588 be nicer to mac OS' lazy scheduler in tests 2020-12-22 10:45:43 -05:00
Simon Cruanes
089a1bec16 try to fix tests that fail on mac OS 2020-07-31 15:29:49 -04:00
Simon Cruanes
8a60d44946 ci: try to test on mac OS again, amend tests, make mdx optional 2020-07-30 19:12:49 -04:00
Simon Cruanes
39e0ad2395 fix(pool): missing emptiness check in Fut.map_l
also add regression test
2020-07-28 16:27:23 -04:00
Simon Cruanes
54099f10d5 test: regression test for stack overflow in CCpool 2020-05-24 19:12:04 -04:00
Simon Cruanes
a767e4618d wip(3.0): remove deprecated functions, in particular sequence 2020-04-24 20:16:53 -04:00
Simon Cruanes
a2d07e4028 chore: update tests to accomodate for split into several libs 2020-04-24 19:27:06 -04:00
Simon Cruanes
5126973173 prepare for 2.8 2019-12-14 17:50:35 -06:00
Simon Cruanes
52ef092a4c feat(pool): add infix operators on futures 2019-12-14 14:37:30 -06:00
Simon Cruanes
7bdf6f6cef test: use more deterministic test for timer 2019-11-12 10:17:50 -06:00
Simon Cruanes
96ed8a37ab feat: introduce shim modules for 4.08 compat
- also make `unlabel` an explicit operation
- use `Stdlib` instead of `Pervasives`
- remove some warnings in Format
2019-06-14 18:26:14 -05:00
Simon Cruanes
3712db3a5b chore: use iter, not sequence, in tests 2019-04-13 03:20:56 -05:00
Simon Cruanes
3b1de9a1c8 chore(build): migrate to dune 1.0 2018-09-16 19:53:40 -05:00
Simon Cruanes
f7d5177540 chore(doc): update ocamldoc markup to remove odoc warnings 2018-03-30 01:49:38 -05:00
JPR
d18d9fb636 Comments - Style & typos fixing 2018-03-15 23:09:31 -05:00
Simon Cruanes
bc27e60a81 reindent 2018-01-21 14:39:44 -06:00
nathan moreau
cde776f4ac Small typos 2018-01-21 20:29:51 +01:00
Simon Cruanes
282f85a874 remove PARAM.min_size in CCPool 2018-01-17 20:12:50 -06:00
Simon Cruanes
0e26502008 wip: fix behavior of CCPool when min_size>0
problem is a deadlock occurs when some threads die (too early?)
when P.min_size>0
2018-01-17 20:11:14 -06:00
Simon Cruanes
d97e1e7231 add script to generate jbuilder flags dynamically 2018-01-14 20:38:40 -06:00
Simon Cruanes
a307bb09f7 chore(jbuild): missing flag for optional sublibs, deps 2018-01-14 19:24:46 -06:00
Simon Cruanes
8f46fdb6d2 move to jbuilder (closes #165) 2018-01-14 17:43:56 -06:00
Jacques-Pascal Deplaix
6d2063ded4 Internally shadow polymorphic operators and functions from Pervasives 2018-01-14 23:32:13 +00:00
Simon Cruanes
c792d70ac7 assertions and cleanup in CCPool 2017-09-13 18:39:14 +02:00
Simon Cruanes
923e83b0fc make tests faster 2017-03-16 10:27:00 +01:00
Simon Cruanes
b06ae52071 new test for CCPool 2017-02-22 13:48:13 +01:00
Simon Cruanes
126bb2f3f2 test for #94 (using Thread.yield to trigger segfault) 2017-01-26 23:49:59 +01:00
Simon Cruanes
61f1ca3231 update a test 2017-01-26 14:20:24 +01:00
Simon Cruanes
9a46b4527c reindent in containers.thread 2017-01-25 00:24:14 +01:00
Marcello Seri
59208fd9c6 Fix with_acquire: release a non locked mutex is UB
This is segfaulting (on ubuntu 16.04 and 16.10) when trying to release the unlocked mutex in the release stage (in general this is an undefined behavior).
2017-01-25 00:15:45 +01:00
Simon Cruanes
e8cd571005 prepare 0.22 2016-12-18 01:32:52 +01:00
David Sheets
35859508c0 threads/CCLock: add try_with_lock to wrap Mutex.try_lock 2016-12-16 18:58:04 +00:00
Simon Cruanes
6ccad958c4 make some tests a bit faster 2016-03-26 11:53:58 +01:00
Simon Cruanes
a2179d4355 prepare for 0.16 2016-02-24 22:08:26 +01:00
Simon Cruanes
663a3cd693 introduce a min_size in CCPool, to keep threads alive
- in benchs, keep `min_size=0` for resource management (need to spawn
  lots of threads)
2016-01-26 02:14:35 +01:00
Simon Cruanes
b0c59e036b add appliative instance in CCPool, factor code 2016-01-26 01:33:24 +01:00
Simon Cruanes
067e89b1fe add CCLock.{decr_then_get, get_then_{decr,set,clear}}
atomic updates for integers and bools
2016-01-26 01:04:43 +01:00
Simon Cruanes
ec70f865e4 rename CCFuture into CCPool, expose the thread pool 2016-01-26 01:04:43 +01:00
Simon Cruanes
6b03a28cba split CCTimer out of CCFuture, a standalone 1-thread timer 2016-01-26 01:04:43 +01:00
Simon Cruanes
9097cb11ab move CCThread.Queue into CCBlockingQueue
- fix the module
- fix benchs
2016-01-26 01:04:33 +01:00
Simon Cruanes
7d8369ab83 small refactor 2016-01-25 18:29:06 +01:00
Simon Cruanes
f53b19545c udpate implem of CCFuture 2016-01-25 17:40:27 +01:00
Simon Cruanes
40c38a5dab add CCThread.spawn{1,2} 2016-01-25 17:16:58 +01:00
Simon Cruanes
49991717c1 add CCLock.update_map 2016-01-25 15:13:12 +01:00
Simon Cruanes
483f90cb52 small fixes in CCSemaphore 2016-01-25 14:26:30 +01:00
Simon Cruanes
d3464563c1 add CCLock.{incr_then_get,get_then_incr} 2016-01-25 14:22:50 +01:00