mFrame
|
靜態公開方法(Static Public Methods) | |
static mframe::io::PrintBuffer & | out (void) |
static mframe::lang::Readable & | in (void) |
static void | reboot (void) |
設備重新啟動 | |
static void | setup (mframe::sys::SystemConfig &systemConfig) |
static void | start (mframe::func::Runnable &task, int stackSize) |
系統初始化核心 | |
static void | error (const void *address, mframe::sys::ErrorCode code) |
錯誤拋出 | |
static void | throwError (const char *message, const char *path, mframe::sys::ErrorCode code) |
拋出錯誤 | |
static int | getCoreClock (void) |
Get the Core Clock object. | |
static void | lowerDelay (uint32 times) |
static bool | delay (int milliseconds) |
函數 delay 等待內核滴答中指定的時間段。 對於1的值,系統等待直到下一個計時器滴答發生。 實際時間延遲最多可能比指定時間少一個計時器滴答聲,即在下一個系統滴答聲發生之前立即調用 osDelay(1),線程會立即重新安排。 | |
static void | wait (void) |
導致當前線程等待,直到另一個線程調用此對象的 notify()方法或 notifyAll()方法,或其他一些線 程中斷當前線程,或一定量的實時時間。 | |
static bool | wait (int timeout) |
導致當前線程等待,直到另一個線程調用此對象的notify()方法或notifyAll()方法,或指定的時間已 過。 | |
static bool | yield (void) |
函數yield()將控制權傳遞給處於READY狀態且具有相同優先級的下一個線程。 如果在READY狀態下沒有其他優先級相同的線程,則當前線程繼續執行,不會發生線程切換。 | |
static int | lock (void) |
核心鎖定,在調用systemUnlock以前將不會進行執行緒切換 | |
static int | unlock (void) |
static mframe::sys::Thread * | currentThread (void) |
取得當前的執行緒 | |
static void | execute (mframe::func::Runnable &runnable) |
static mframe::sys::Thread & | allocThread (mframe::func::Runnable &runnable, int stackSize) |
static mframe::sys::Thread & | allocThread (mframe::func::Runnable &runnable, mframe::lang::Data &stackMemory) |
static mframe::sys::Allocator * | getAllocator (void) |
Get the Allocator object. | |
static mframe::sys::SystemControl & | getControl (void) |
取得系統層控制項目。 | |
靜態公開屬性 | |
static mframe::sys::Svchost * | mSvchost |
static mframe::sys::Allocator * | mAllocator |
static mframe::sys::Kernel * | mKernel |
static mframe::sys::HardwareInfo * | mHardwareInfo |
額外的繼承成員 | |
![]() | |
Object (void) | |
Construct a new Object object. | |
virtual | ~Object (void) override |
Destroy the Object object. | |
void * | operator new (size_t n) |
void * | operator new (size_t n, void *p) |
mframe::lang::Object & | getObject (void) override |
取得類Object | |
void | delay (int milliseconds) const |
函數 delay 等待內核滴答中指定的時間段。 對於1的值,系統等待直到下一個計時器滴答發生。 實際時間延遲最多可能比指定時間少一個計時器滴答聲,即在下一個系統滴答聲發生之前立即調用 osDelay(1),線程會立即重新安排。 | |
bool | equals (Object *object) const |
函數 delay 等待內核滴答中指定的時間段。 對於1的值,系統等待直到下一個計時器滴答發生。 實際時間延遲最多可能比指定時間少一個計時器滴答聲,即在下一個系統滴答聲發生之前立即調用 osDelay(1),線程會立即重新安排。 | |
bool | equals (Object &object) const |
函數 delay 等待內核滴答中指定的時間段。 對於1的值,系統等待直到下一個計時器滴答發生。 實際時間延遲最多可能比指定時間少一個計時器滴答聲,即在下一個系統滴答聲發生之前立即調用 osDelay(1),線程會立即重新安排。 | |
void | wait (void) const |
導致當前線程等待,直到另一個線程調用此對象的notify()方法或notifyAll()方法,或指定的時間 已過。 | |
bool | wait (int timeout) const |
導致當前線程等待,直到另一個線程調用此對象的 notify()方法或 notifyAll()方法,或其他一些線 程中斷當前線程,或一定量的實時時間。 | |
bool | yield (void) const |
函數yield()將控制權傳遞給處於READY狀態且具有相同優先級的下一個線程。 如果在READY狀態下沒有其他優先級相同的線程,則當前線程繼續執行,不會發生線程切換。 | |
int | lock (void) const |
核心鎖定,在調用unlock以前將不會進行執行緒切換 | |
int | unlock (void) const |
核心解鎖。 | |
mframe::sys::Thread * | currentThread (void) const |
取得當前的執行緒 | |
virtual int | hashcode (void) const |
返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。 | |
![]() | |
virtual | ~Interface (void)=default |
Destroy the struct object. | |
|
static |
runnable | |
stackSize |
|
static |
runnable | |
stackMemory |
|
static |
取得當前的執行緒
|
static |
函數 delay 等待內核滴答中指定的時間段。 對於1的值,系統等待直到下一個計時器滴答發生。 實際時間延遲最多可能比指定時間少一個計時器滴答聲,即在下一個系統滴答聲發生之前立即調用 osDelay(1),線程會立即重新安排。
milliseconds | - time ticks value |
|
static |
錯誤拋出
address | |
code |
|
static |
runnable |
|
static |
Get the Allocator object.
|
static |
取得系統層控制項目。
|
static |
Get the Core Clock object.
|
static |
|
static |
核心鎖定,在調用systemUnlock以前將不會進行執行緒切換
|
static |
times |
|
static |
|
static |
systemConfig |
|
static |
系統初始化核心
kernel | 核心方法,建議使用CMSIS-RTOS2 |
|
static |
拋出錯誤
message | 錯誤訊息 |
path | 方法路徑 |
code | 異常碼 |
|
static |
|
static |
導致當前線程等待,直到另一個線程調用此對象的notify()方法或notifyAll()方法,或指定的時間已 過。
當前的線程必須擁有該對象的顯示器。
此方法使當前線程(稱為T )將其放置在該對象的等待集中,然後放棄對該對象的任何和所有同步聲明。 線程T變得禁用線程調度目的,並且休眠,直到發生四件事情之一:
然後從該對象的等待集中刪除線程T ,並重新啟用線程調度。然後它以通常的方式與其他線程競爭在對像 上進行同步的權限; 一旦獲得了對象的控制,其對對象的所有同步聲明就恢復到現狀 - 也就是在調用wait方法之後的情況。 線程T然後從調用wait方法返回。因此,從返回wait方法,對象和線程的同步狀態T正是因為它是當wait 被調用的方法。
線程也可以喚醒,而不會被通知,中斷或超時,即所謂的虛假喚醒 。雖然這在實踐中很少會發生, 但應用程序必須通過測試應該使線程被喚醒的條件來防範,並且如果條件不滿足則繼續等待。 換句話說,等待應該總是出現在循環中,就像這樣:
|
static |
導致當前線程等待,直到另一個線程調用此對象的 notify()方法或 notifyAll()方法,或其他一些線 程中斷當前線程,或一定量的實時時間。
這種方法類似於一個參數的 wait方法,但它允許對放棄之前等待通知的時間進行更精細的控制。 以納秒 為單位的實時數量由下式給出:
1000000*超時+納米
在所有其他方面,該方法與一個參數的方法 wait(long)相同。 特別是, wait(0, 0)意味著同樣的事 情 wait(0) 。
當前的線程必須擁有該對象的顯示器。 線程釋放此監視器的所有權,並等待直到發生以下兩種情況之一:
然後線程等待,直到它可以重新獲得監視器的所有權並恢復執行。
像在一個參數版本中,中斷和虛假喚醒是可能的,並且該方法應該始終在循環中使用:
timeout | - 以毫秒為單位等待的最長時間。 |
|
static |
函數yield()將控制權傳遞給處於READY狀態且具有相同優先級的下一個線程。 如果在READY狀態下沒有其他優先級相同的線程,則當前線程繼續執行,不會發生線程切換。
函數yield()不會將線程設置為BLOCKED狀態。 因此,即使處於READY狀態的線程可用,也不會調度優先 級較低的線程。