وب سایت تخصصی شرکت فرین
دسته بندی دوره ها

C++ Concurrency : C++ Atomics and memory model Deep Dive

سرفصل های دوره

C++ Memory model, concurreny, multithreading, performance, modern C++, C++11/14/17/20, gdb, valgrind, C++ atomics


1. Introduction
  • 1. Introduction
  • 2. C++ Memory Model from standard to production

  • 2. Modern C++ Memory Model Closer look
  • 1. Memory Model guarantees
  • 2. External factors affecting the program execution workflow of a C++ program
  • 3. Sequential conisistency definition in multithreaded applications
  • 4. Race condition in concurrency with regard to sequential consistency
  • 5. SC-DRF Sequential Concistency (Data Race Free)
  • 6. Role of Modern C++ memory model in guarantee of SC-DRF

  • 3. Code Optimizations Behind the scenes
  • 1. Simple optimization example
  • 2. Code walkthrough of issue with the concurrent execution of multithreaded code
  • 3. Optimization example with single threaded code
  • 4. Summary and general tips around optimization of concurrent code in modern C++

  • 4. Concurrency and barriers
  • 1. Thinking in Transactions
  • 2. The concept of critical section in concurrent and multithreaded applications
  • 3. Concurrency considerations while moving code out of critical sections
  • 4. Concurrency considerations while moving code inside of critical sections
  • 5. Concept of acquire and release barriers in concurrency memory models
  • 6. Considerations while choosing memory barriers while desiging for multithreading
  • 7. A closer look at barriers and their relation to sequential consistency
  • 8. Summary of memory barriers in concurrent applications
  • 9. Impact of external optimizations on concurreny in modern C++ applications

  • 5. Performance analysis of atomics data types in modern C++
  • 1. Considerations while making performace measurements
  • 2. Code experiment recommended to be performed by students.
  • 3. Code demonstartion of behavoir of atomic variables in practice
  • 4. Do atomic variables wait for each other
  • 5. False sharing in concurrency and multithreading

  • 6. Compare and Swap in Modern C++
  • 1. Introduction to compare and swap
  • 2. Example of compare and swap
  • 3. Pseudo code implementation of compare and exchange strong
  • 4. Pseudo code implementation of compare exchange strong - faster
  • 5. Compare and exchange weak - reason for spurios failures

  • 7. Memory ordering in multithreading with Modern C++ memory model
  • 1. Memory ordering basics in concurrency
  • 2. Memory ordering nuances
  • 3. Memory ordering and memory barriers in modern C++ language
  • 4. Acquire Barrier in Modern C++
  • 5. Release Barrier in Modern C++
  • 6. Using acquire and release barriers for synchronization in multithreading
  • 7. Using memory barriers as locks for efficient concurreny with modern C++
  • 8. Bidirectional barriers in Modern C++ memory model
  • 9. Why does compare and exchange in C++ have two parameters for memory ordering

  • 8. Memory order Software Design and performance cosniderations
  • 1. Purpose of memory order in modern C++ concurrency memory model
  • 2. Memory order as a tool to convey the C++ programmers intent
  • 3. Memory order as programmers intent Example - 1
  • 4. Memory order as programmers intent Example - 2
  • 5. Memory order as programmers intent Example - 3
  • 6. Memory barriers and performance implications
  • 7. Sequential consistency and performance implications
  • 8. Design and implementation guidelines for using stdatomics
  • 9. When to use the atomics provided by the modern C++

  • 9. Tools to work with concurrency and multithreading in C++ at production level
  • 1. Demo code Walkthrough of code sample being used to genreate results of tools
  • 2. top utility output from Linux machine
  • 3. htop utility output from Linux machine
  • 4. perf utility output from Linux machine
  • 5. gprof utility output from Linux machine
  • 6. Intel Vtune utility output from Linux machine
  • 7. Google Orbit utility output from Linux machine
  • 8. Heaptrack utility output from Linux machine
  • 9. Valgrind utility output from Linux machine
  • 10. pahole utility output from Linux machine
  • 11. Demonstration of false sharing in concurrent applications using modern C++
  • 12. Other tools to explore gdb, gcore, visual studio code, debugging tools
  • 13. Conclusion
  • 14. [Bonus Lecture].html
  • 139,000 تومان
    بیش از یک محصول به صورت دانلودی میخواهید؟ محصول را به سبد خرید اضافه کنید.
    خرید دانلودی فوری

    در این روش نیاز به افزودن محصول به سبد خرید و تکمیل اطلاعات نیست و شما پس از وارد کردن ایمیل خود و طی کردن مراحل پرداخت لینک های دریافت محصولات را در ایمیل خود دریافت خواهید کرد.

    ایمیل شما:
    تولید کننده:
    شناسه: 11554
    حجم: 1042 مگابایت
    مدت زمان: 186 دقیقه
    تاریخ انتشار: 20 اردیبهشت 1402
    طراحی سایت و خدمات سئو

    139,000 تومان
    افزودن به سبد خرید