mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-07 04:23:41 +00:00
60f8a62978
This commit adds support for a scheduler that runs a scheduler on all available cores. It is meant to be used on baremetal systems with a fixed number of cores, such as the RP2040. The initial implementation adds support for multicore scheduling to the riscv-qemu target as a convenient testing target. This means that this new multicore scheduler is tested in CI, including a bunch of standard library tests (`make tinygo-test-baremetal`). This should ensure the new scheduler is reasonably well tested before trying to use it on harder-to-debug targets like the RP2040.
19 lines
431 B
Go
19 lines
431 B
Go
//go:build tinygo.unicore
|
|
|
|
package task
|
|
|
|
// PMutex is a real mutex on systems that can be either preemptive or threaded,
|
|
// and a dummy lock on other (purely cooperative) systems.
|
|
//
|
|
// It is mainly useful for short operations that need a lock when threading may
|
|
// be involved, but which do not need a lock with a purely cooperative
|
|
// scheduler.
|
|
type PMutex struct {
|
|
}
|
|
|
|
func (m *PMutex) Lock() {
|
|
}
|
|
|
|
func (m *PMutex) Unlock() {
|
|
}
|