reentrancy

    0熱度

    1回答

    實踐: 從我的理解,一個可能要允許代碼關鍵部分的運行,不會中斷。 可以通過阻止標準信號等中斷來實現。 衝突: 我如何能夠處理從一個關鍵部分的代碼中發生故障/標準信號。 我能想到的一個經典例子是分配內存失敗。 甚至更​​好,由於地址無效而無法釋放內存。 從我理解的「alloc/free」部分開始的內存操作確實屬於臨界區部分。 我有什麼企圖: 我曾嘗試搜索周圍,以及學習的信號和重入主題, 但是我偶然發

    0熱度

    1回答

    我讀通過Python文檔,並且,Section 8.4.1下, 我發現下面__init__定義(略): class ListBasedSet(collections.abc.Set): ''' Alternate set implementation favoring space over speed and not requiring the set elements to

    4熱度

    1回答

    給定一個C函數庫,如果導出的函數是可重入的,是否有自動驗證的方法? 可以在運行時(如果需要檢測後)或代碼分析。源代碼可用。 注意:這不是一個std-C庫,也不是一個帶有線程安全契約的良好記錄的GNU庫。

    0熱度

    2回答

    我對「可重入函數」的理解是,它是一個可以被中斷的函數(例如,通過ISR或遞歸調用),並且稍後恢復,從而函數的總輸出不受任何影響通過中斷的方式。 以下是從維基百科https://en.wikipedia.org/wiki/Reentrancy_(computing) int t; void swap(int *x, int *y) { int s; s = t; // s

    0熱度

    2回答

    我目前正在初始化堆棧以接收中斷時需要服務的任務。例如,有兩個任務會以不同的週期調用,但是這兩個任務都使用相同的ISR。採樣率較高的任務應該中斷較低的採樣率任務並輸入相同的ISR。目前我正在爲任務分配堆棧,並在完成時釋放堆棧內存。不過,我想知道MSP430是否自己處理重入問題,這樣我就不需要創建和刪除堆棧,保存和恢復上下文。

    0熱度

    1回答

    這個問題來自Java實踐中的併發實例。在本書的第二章中,我們得到了一個這樣的例子,我沒有完全複製它。比方說,我們的代碼 class A{ synchronized void method1(){ do some stuff.. } } class B extends A{ synchronized void method1(){ super.metho

    -1熱度

    2回答

    我開發了一個基於gcc的原子內置函數的可重入函數。不幸的是,我得到「計算,但不使用」的價值觀神祕警告: $ gcc -c -Wall ss.c ss.c: In function ‘ss_wrapper’: ss.c:87:3: warning: value computed is not used [-Wunused-value] __atomic_exchange_n(&ss_t

    2熱度

    1回答

    如果你有一個函數庫f_func(),你知道它不是可重入的,你將如何在線程環境(POSIX)中使用它?您無法訪問庫的源代碼。

    2熱度

    3回答

    像標題所示: 如果我有一個靜態成員函數,它本身不包含靜態變量的類,我可以考慮成員函數可重入嗎?

    6熱度

    1回答

    我看過這表明SemaphoreSlim將限制一段代碼,以通過每次只有1線程運行,如果您將其配置爲SemaphoreSlim SemaphoreSlim MSDN 文檔: SemaphoreSlim _semaphoreSlim = new SemaphoreSlim(1, 1); 然而,這不是」 t表示是否停止相同的線程訪問該代碼。這與異步和等待。如果在方法中使用await,則控制權將離開該方