Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
typon-concurrency
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Xavier Thompson
typon-concurrency
Commits
f9c96ad3
Commit
f9c96ad3
authored
May 19, 2022
by
Xavier Thompson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ring_buffer: Reduce resizing frequency
parent
880da8d0
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
3 additions
and
3 deletions
+3
-3
rt/include/typon/fundamental/deque.hpp
rt/include/typon/fundamental/deque.hpp
+1
-1
rt/include/typon/fundamental/ring_buffer.hpp
rt/include/typon/fundamental/ring_buffer.hpp
+2
-2
No files found.
rt/include/typon/fundamental/deque.hpp
View file @
f9c96ad3
...
@@ -84,7 +84,7 @@ namespace typon::fdt::lock_free
...
@@ -84,7 +84,7 @@ namespace typon::fdt::lock_free
_bottom
.
store
(
bottom
+
1
,
relaxed
);
_bottom
.
store
(
bottom
+
1
,
relaxed
);
}
}
u64
capacity
=
array
->
capacity
();
u64
capacity
=
array
->
capacity
();
if
(
capacity
>
u64
(
1
)
<<
_bits
&&
capacity
>
(
bottom
-
top
)
*
4
)
if
(
capacity
>
u64
(
1
)
<<
_bits
&&
capacity
>
(
bottom
-
top
)
*
8
)
{
{
x
.
set_state
(
Prune
);
x
.
set_state
(
Prune
);
}
}
...
...
rt/include/typon/fundamental/ring_buffer.hpp
View file @
f9c96ad3
...
@@ -63,7 +63,7 @@ namespace typon::fdt::lock_free
...
@@ -63,7 +63,7 @@ namespace typon::fdt::lock_free
ring_buffer
*
grow
(
u64
start
,
u64
end
)
noexcept
ring_buffer
*
grow
(
u64
start
,
u64
end
)
noexcept
{
{
auto
buffer
=
new
ring_buffer
(
std
::
countr_one
(
_mask
)
+
1
,
this
);
auto
buffer
=
new
ring_buffer
(
std
::
countr_one
(
_mask
)
+
2
,
this
);
return
fill
(
buffer
,
start
,
end
);
return
fill
(
buffer
,
start
,
end
);
}
}
...
@@ -72,7 +72,7 @@ namespace typon::fdt::lock_free
...
@@ -72,7 +72,7 @@ namespace typon::fdt::lock_free
ring_buffer
*
last
=
nullptr
;
ring_buffer
*
last
=
nullptr
;
auto
next
=
this
;
auto
next
=
this
;
auto
size
=
(
end
-
start
);
auto
size
=
(
end
-
start
);
auto
threshold
=
size
*
2
;
auto
threshold
=
size
*
4
;
while
(
next
->
_next
&&
next
->
_next
->
capacity
()
>=
threshold
)
while
(
next
->
_next
&&
next
->
_next
->
capacity
()
>=
threshold
)
{
{
last
=
next
;
last
=
next
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment