[PATCH 1/2] librtemsc++: Add join() and detach() to the thread
Chris Johns
chrisj at rtems.org
Thu Oct 8 22:49:37 UTC 2020
On 9/10/20 3:28 am, Gedare Bloom wrote:
> On Thu, Oct 8, 2020 at 2:19 AM <chrisj at rtems.org> wrote:
>>
>> From: Chris Johns <chrisj at rtems.org>
>>
>> - Do not start threads detached
>> ---
>> cpukit/include/rtems/thread.hpp | 4 ++++
>> cpukit/librtemscxx/thread.cpp | 22 ++++++++++++++++++----
>> 2 files changed, 22 insertions(+), 4 deletions(-)
>>
>> diff --git a/cpukit/include/rtems/thread.hpp b/cpukit/include/rtems/thread.hpp
>> index e90e664dfa..2c4899dc0b 100644
>> --- a/cpukit/include/rtems/thread.hpp
>> +++ b/cpukit/include/rtems/thread.hpp
>> @@ -321,6 +321,10 @@ namespace rtems
>>
>> bool joinable() const noexcept;
>>
>> + void join() noexcept;
>> +
>> + void detach() noexcept;
Hmmm I the `noexcept` is wrong here as an exception may be raised. I will remove
these.
>> +
>> /*
>> * Constrain use. These are not available.
>> */
>> diff --git a/cpukit/librtemscxx/thread.cpp b/cpukit/librtemscxx/thread.cpp
>> index 11bf3df230..ae13201bd4 100644
>> --- a/cpukit/librtemscxx/thread.cpp
>> +++ b/cpukit/librtemscxx/thread.cpp
>> @@ -346,6 +346,24 @@ namespace rtems
>> return !(id_ == id());
>> }
>>
>> + void
>> + thread::join() noexcept
>> + {
>> + if (!joinable())
> explicit { for 1-liners is preferred
Yes ... old habits ...
>> + system_error_check (ENOMEM, "join");
> }
>
> In general, this file is not entirely adhering to RTEMS coding style.
> What coding style is it? Sorry I missed this in the first patch(es)
> adding the cxx iface
It does not entirely follow the coding style as it is C++.
The code was first posted in December 2019 and goes back further as I played.
The C++ makes use of advanced template techniques, nesting classes and structs,
namespace, exceptions and more. Some of the coding standard is fine and other
parts do not work and do not relate. I have not checked in detail.
>> + system_error_check (::pthread_join (id_.id_, nullptr), "join");
> prefer to not have a space before the ( for function calls so that
> function-like macros appear consistently
Interesting, this is something the GNU coding standard recommends as being more
readable [1]. I did not know it was a requirement in the coding standard. I am
not fused and can fix this but it would take a little time so let me know what
you would like me to do? Also if you have other places that need attention
please let me know.
Thanks
Chris
[1] https://www.gnu.org/prep/standards/html_node/Formatting.html#Formatting
It is interesting how we directly conflict with some of what it says
More information about the devel
mailing list