Difference between revisions of "Advanced C++ Programming Tutorial 6"
From Chilipedia
(→Part 2) |
(→Homework) |
||
Line 26: | Line 26: | ||
=== Part 1 === | === Part 1 === | ||
Identify targets in the [https://github.com/planetchili/Inheritance Memefighter codebase from Intermediate c++] for resource sharing, implement the sharing with <code>std::shared_ptr</code>, and consider/discuss potential downsides to the resource sharing for each instance of resource sharing. Solution can be found [https://youtu.be/N2CDksFB0Uk here]. | Identify targets in the [https://github.com/planetchili/Inheritance Memefighter codebase from Intermediate c++] for resource sharing, implement the sharing with <code>std::shared_ptr</code>, and consider/discuss potential downsides to the resource sharing for each instance of resource sharing. Solution can be found [https://youtu.be/N2CDksFB0Uk here]. | ||
+ | === Part 2 === | ||
+ | Make a simple announcing class, and then use <code>allocate_shared</code> in conjunction with <code>LocalAlloc</code> from Win32 to create an instance of that class that is managed by a <code>shared_ptr</code> with a monolithic control block. | ||
== See also == | == See also == |
Revision as of 21:50, 9 November 2019
Share your resources in grand style with shared_ptr
.
Contents
Topics
Part 1
- Review of
unique_ptr
-
shared_ptr
usage scenarios -
use_count
- How to pass/receive resources when
shared_ptr
is involved - Comparing
shared_ptr
s - Conversion from
unique_ptr
toshared_ptr
- Custom deleter for
shared_ptr
Part 2
-
weak_ptr
andlock
- The control block
- Monolithic
make_shared
control block optimization - Race condition and synchronization
- Resource destruction with monolithic control block
-
static_pointer_cast
dynamic_pointer_cast
reinterpret_pointer_cast
const_pointer_cast
-
enable_shared_from_this
Video Timestamp Index
Homework
Part 1
Identify targets in the Memefighter codebase from Intermediate c++ for resource sharing, implement the sharing with std::shared_ptr
, and consider/discuss potential downsides to the resource sharing for each instance of resource sharing. Solution can be found here.
Part 2
Make a simple announcing class, and then use allocate_shared
in conjunction with LocalAlloc
from Win32 to create an instance of that class that is managed by a shared_ptr
with a monolithic control block.