Commit Graph

1840 Commits

Author SHA1 Message Date
oliver Kowalke
fb309b8fde make random number distribution static in spinlocks 2017-04-07 16:01:19 +02:00
oliver Kowalke
7e45390dc3 add notes to mnemonics used in cpu_relax() 2017-04-05 10:33:27 +02:00
oliver Kowalke
c3f1c54bee Merge branch 'develop' 2017-04-04 11:40:01 +02:00
Oliver Kowalke
4a42f47ba9 cast diff of pointers to int
- the offset is stored on the stack (in front of mem-aligned context)
2017-04-02 21:44:39 +02:00
Oliver Kowalke
b3f49eb1e4 futex: apply INFINITE to WaitOnAddress() 2017-04-02 21:44:39 +02:00
Oliver Kowalke
e3358bb9ba docu: add some notes to shared_work/work_stealing sched-algos 2017-04-02 21:44:39 +02:00
Oliver Kowalke
6f152b6e00 use mnemonic 'yield' only for some ARM variants
- fix #110
2017-04-02 21:44:39 +02:00
Oliver Kowalke
dca71b80c2 make std::uniform_int_distribution<> static in spinlocks 2017-04-02 17:51:55 +02:00
Oliver Kowalke
b445941352 set define for spinlock-retries of cpu_relax() to 500 2017-04-02 17:51:55 +02:00
Oliver Kowalke
feec94a38e remove std::this_thread::yield() from spinlocks 2017-04-02 17:51:44 +02:00
Oliver Kowalke
aa1b082118 make std::uniform_int_distribution<> static in work-stealing algo 2017-04-01 10:23:33 +02:00
Oliver Kowalke
6c2f639e28 Merge branch 'develop' 2017-03-30 20:46:43 +02:00
Oliver Kowalke
0a6384dd77 fix buffered_channel synchronization 2017-03-30 20:46:30 +02:00
Oliver Kowalke
57fd49bea9 Merge branch 'develop' 2017-03-30 20:37:10 +02:00
Oliver Kowalke
f39520b5ae fix buffered_channel synchronization 2017-03-30 20:36:35 +02:00
Oliver Kowalke
6beae49778 skynet: move joining fibers after reading values 2017-03-30 06:18:29 +02:00
Oliver Kowalke
efb646debe use additional asserts for scheduler 2017-03-29 20:11:14 +02:00
Oliver Kowalke
6edafa63c9 Merge branch 'develop' 2017-03-27 18:06:37 +02:00
Oliver Kowalke
8b2cda5c15 documentation updated 2017-03-27 18:05:56 +02:00
Oliver Kowalke
547d64d45f use single-linked instead of double-linked instrusive list 2017-03-27 18:05:55 +02:00
oliver Kowalke
38c02bdf53 remove alignas() from spinlock member vars
- align spinlock together with protected data
- fetch spinlock and protected member via one cacheline
2017-03-27 18:05:55 +02:00
oliver Kowalke
968d5a0d56 reorder member vars for context 2017-03-27 18:05:55 +02:00
oliver Kowalke
99e5301d90 reorder member vars for scheduler 2017-03-27 18:05:55 +02:00
oliver Kowalke
a05014978a reorder member vars for condition_variable 2017-03-27 18:05:55 +02:00
oliver Kowalke
de34f08c75 reorder member vars for mutex types 2017-03-27 18:05:55 +02:00
Oliver Kowalke
b140113d9e make scheduler member var non-atomic
- synchronize-with/happend-before via atomics in
  scheduling-algorithm and queues/channels
2017-03-27 18:05:55 +02:00
Oliver Kowalke
c618d5d4a7 skynet performance test with 1.000.000 2017-03-27 18:05:55 +02:00
oliver Kowalke
44600bfcf5 wrap remote_ready_is_linked() by BOOST_FIBERS_NO_ATOMICS 2017-03-22 13:18:12 +01:00
oliver Kowalke
2bef210265 add addtional asserts 2017-03-22 13:18:12 +01:00
oliver Kowalke
48071238a8 use relaxed-ops for scheduler member variable 2017-03-22 13:18:11 +01:00
oliver Kowalke
b903128504 lock spinlock used in terminate() 2017-03-22 13:18:11 +01:00
oliver Kowalke
65cfbdc8cf context: rename flags_ to terminated_ and make it non-atomic 2017-03-21 10:31:24 +01:00
oliver Kowalke
4e93113e41 unlock spinlock from ~context() in other context 2017-03-20 11:47:58 +01:00
oliver Kowalke
7e8a34ec81 lock spinlock in ~context() to protect wait-queue 2017-03-20 11:47:51 +01:00
oliver Kowalke
3c6da7265f reorder unlinking from worker-list
- move context::worker_unlink() before context::scheduler_store()
-> unlink happens before store => other threads synchronized with
2017-03-20 09:51:44 +01:00
oliver Kowalke
afff23ff30 add additional asserts in scheduler + context 2017-03-20 09:51:37 +01:00
Oliver Kowalke
5d00924213 unbuffered_channeL: spinlocks for producer + consumer 2017-03-19 18:53:07 +01:00
Oliver Kowalke
53cbd86f5f buffered_channeL: spinlocks for producer + consumer 2017-03-19 18:52:48 +01:00
Oliver Kowalke
a7058fa39a add asserts to dispatch() for execution-context 2017-03-18 07:06:30 +01:00
Oliver Kowalke
f6c364614b remove context_mpsc_queue 2017-03-18 07:06:07 +01:00
Oliver Kowalke
0d62d7c5d2 remote-ready-queue: replace context_mpsc_queue by linked-list + spinlock 2017-03-18 07:05:52 +01:00
Oliver Kowalke
8c6f853201 Revert "use wait-queue based on array"
This reverts commit ecb87f2945.
2017-03-17 19:57:48 +01:00
Oliver Kowalke
270d6c1b39 remove BOOST_DISABLE_ASSERTS from performance/Jamfile 2017-03-17 18:54:01 +01:00
Oliver Kowalke
ecb87f2945 use wait-queue based on array 2017-03-17 17:52:44 +01:00
Oliver Kowalke
47c4f0939d join fibers in skynet-test 2017-03-17 17:44:56 +01:00
oliver Kowalke
332e76ebb8 use steal-op. of context-queues in work_stealing
- spinlock-queue is faster than spmc-queue because
  spmc-queue fails to steal a non-pinned context
2017-03-17 11:17:05 +01:00
oliver Kowalke
9535e41d06 context_spmc_queue with steal-op. 2017-03-17 11:17:05 +01:00
oliver Kowalke
2fe94b0efd context_spinlock_queue with steal-op. 2017-03-17 11:17:05 +01:00
oliver Kowalke
9982fd229f use context_spinlock_queue in work_stealing 2017-03-17 11:17:05 +01:00
oliver Kowalke
bd7a3b835f context-queue protected by spinlock 2017-03-17 11:17:05 +01:00