markdown_parser/test_data/docs/nim_concurrency.md
Bruno Charest 18ee8a1cfd feat: Add report generation module for tracking metadata changes
- Implemented `report.nim` to create structured reports on metadata modifications.
- Added functionality to merge reports and convert them to formatted strings.

docs: Create prompt documentation for Markdown parser project

- Added `prompt.md` detailing the requirements and functionalities for the Markdown parser.
- Included specifications, usage examples, and testing guidelines.

docs: Generate code review report for Markdown parser

- Created `rapport_revue_code.md` outlining security vulnerabilities, code quality issues, and suggested improvements.
- Provided a detailed analysis of the codebase with actionable recommendations.

test: Add test data for Markdown parser

- Included various Markdown files and a JPG image in `test_data` to simulate different scenarios.
- Ensured that the parser can handle both valid and invalid metadata.

chore: Add version management file

- Created `version.nim` for automatic versioning of the Markdown parser.
- Established constants for major, minor, patch, and build versions.
2026-04-19 12:56:55 -04:00

1.5 KiB

La concurrence en Nim

Nim offre plusieurs mécanismes pour gérer la concurrence et le parallélisme dans vos applications. Ces fonctionnalités permettent d'exploiter efficacement les processeurs multi-cœurs modernes.

Threads

Nim supporte les threads natifs de l'OS via le module threads.

import std/[threadpool]

proc processData(data: int) {.thread.} =
  echo "Processing data: ", data

var threads: array[4, Thread[int]]
for i in 0..3:
  createThread(threads[i], processData, i)

joinThreads(threads)

ThreadPool

Pour une gestion plus simple des tâches parallèles, Nim propose le module threadpool.

import std/[threadpool]

proc calculateValue(x: int): int =
  result = x * x

var futures = newSeq[FlowVar[int]](10)
for i in 0..9:
  futures[i] = spawn calculateValue(i)

for i in 0..9:
  echo ^futures[i]

Async/Await

Pour la programmation asynchrone non bloquante, Nim offre le module asyncdispatch.

import std/[asyncdispatch, httpclient, strformat]

proc fetchUrl(url: string) {.async.} =
  let client = newAsyncHttpClient()
  let response = await client.get(url)
  echo fmt"Fetched {url}, size: {response.body.len} bytes"
  client.close()

proc main() {.async.} =
  var fetches = @[
    fetchUrl("https://nim-lang.org"),
    fetchUrl("https://github.com/nim-lang/Nim")
  ]
  await all(fetches)

waitFor main()

Ces fonctionnalités de concurrence font de Nim un excellent choix pour développer des applications hautes performances qui exploitent pleinement les capacités des processeurs modernes.