Rustの非同期・同期処理とスレッドモデルの仕組み

Tokioなどの非同期ランタイムを用いた開発では、main関数に#[tokio::main]マクロを付与して記述するケースが一般的です。一見すると非同期関数として動作するように見えますが、コンパイル時に展開される実際のコード構造は同期ベースです。このマクロは構文糖衣であり、内部的には以下のような同期関数に展開されます。 fn main() { let rt = tokio::runtime::Builder ...

7月17日 21:12 投稿

Linuxプロセス管理とタスクスケジューリングの基本

プロセス管理:ps、top タスクスケジューリング:crontab プロセス管理の概念 プロセスとは、独自の仮想アドレス空間内で実行される独立したプログラムです。 プログラムとプロセスの違い:プログラムは静的なコマンドの集合であり、システムのリソースを消費しません。一方、プロセスは常に変化する動的なもので、システムのリソースを使用します。1つのプログラムから複 ...

7月13日 00:48 投稿

nopCommerceスケジュールタスクの構造解析

基本構成 nopCommerceの定期タスク機能は、以下の主要コンポーネントで構成されています: IScheduleTaskService(タスク情報取得インターフェース) ITask(タスク実装インターフェース) Task(タスク実行クラス) TaskManager(タスク管理クラス) TaskThread(スレッド管理クラス) インターフェース設計 ITaskインターフェースはすべてのタスク処理クラスが実装す ...

6月18日 19:25 投稿

Spring BootとQuartzスケジューラの統合ガイド

Javaにおけるタスクスケジューリング手法の比較 Javaで定期的な処理を実装する方法は複数存在します。それぞれの特徴を整理します。 Timer: シンプルで導入が容易ですが、単一スレッドでタスクを直列実行するため、1つのタスクが遅延や例外を起こすと後続タスクに影響します。複雑なスケジューリングには不向きです。 ScheduledExecutor: Java 5で導入されたスレッドプー ...

6月2日 17:48 投稿

STM32におけるFreeRTOSタスク生成とスケジューリング動作の検証

FreeRTOSにおけるタスクスケジューリングの基礎 FreeRTOSでは、異なる優先度を持つタスク間では「優先度スケジューリング」が、同じ優先度を持つタスク間では「ラウンドロビン(タイムスライス)スケジューリング」が採用されます。ここでは、CMSIS-RTOS APIを用いたタスクの生成から、スケジューリングの挙動、およびタスクの待機状態への遷移までを実験を通じて確認しま ...

6月1日 21:03 投稿