esp-idf/examples/cxx/pthread
2024-03-05 14:49:04 +08:00
..
main refactor(cxx): formatted according to IDF astyle rules 2024-03-05 14:49:04 +08:00
CMakeLists.txt tools: Increase the minimal supported CMake version to 3.16 2022-06-01 06:35:02 +00:00
pytest_examples_cxx_pthread.py ci: migrate examples/cxx ttfw test scripts to pytest 2023-04-06 04:30:35 +00:00
README.md feat(ci): Enable p4 example, test_apps and unit tests CI build 2023-08-24 12:51:19 +08:00
sdkconfig.ci example_tests: Deletes usage esp32c3 ECO0 in CI (by default ECO3) 2021-09-24 13:55:07 +08:00

Supported Targets ESP32 ESP32-C2 ESP32-C3 ESP32-C6 ESP32-H2 ESP32-P4 ESP32-S2 ESP32-S3

C++ pthread Example

(See the README.md file in the upper level 'examples' directory for more information about examples.)

Support for the C++ threads in ESP-IDF is implemented on top of the ESP-pthread component. Thus, C++ threads created using the standard thread class constructor will automatically inherit the current ESP-pthread configuration. This example demonstrates how to leverage the thread configuration functions provided by ESP-pthread (e.g., esp_pthread_get_default_config() and esp_pthread_set_cfg()) to modify the stack sizes, priorities, names, and core affinities of the C++ threads.

Note: Due to the use of the C++ threads, this example is written in C++ instead of C.

How to use example

Hardware Required

This example should be able to run on any commonly available ESP32 development board.

Configure the project

idf.py menuconfig
  • The default ESP-pthread configuration may also be modified under Component config > PThreads

Build and Flash

Build the project and flash it to the board, then run monitor tool to view serial output:

idf.py -p PORT flash monitor

(Replace PORT with the name of the serial port to use.)

(To exit the serial monitor, type Ctrl-].)

See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects.

Example Output

The following log output should appear when the example runs (note that the bootloader log has been omitted).

...
I (380) Thread 1: Core id: 0, prio: 5, minimum free stack: 2068 bytes.
I (0) pthread: This thread (with the default name) may run on any core.Core id: 1, prio: 5, minimum free stack: 2056 bytes.
I (390) Thread 1: This is the INHERITING thread with the same parameters as our parent, including name. Core id: 0, prio: 5, minimum free stack: 2092 bytes.
I (410) Thread 2: Core id: 1, prio: 5, minimum free stack: 2088 bytes.
I (410) main: core id: 0, prio: 1, minimum free stack: 2928 bytes.