CODE EXAMPLE 2-6

{

if (initialized == 0) { initialized = 1; mw_init();

}

KNI_ReturnVoid();

}

Note that no mutual exclusion is necessary in native methods. The CLDC HotSpot Implementation has a single thread that runs all Java threads and all native methods. This thread can run at most one native method at a time. The system cannot context- switch to another Java thread while it is in the midst of a native method. Therefore, in the CLDC HotSpot Implementation, all native methods are essentially critical sections. This makes it possible to write native code without many concurrency considerations.

Note – Your system might employ multiple native threads. If this is the case, you might need to employ native-level mutual exclusion facilities such as Pthreads mutexes.

While it is convenient to treat each native method as a critical section, one must ensure that data access and updates are done within a single native method. If any logic about updating native state is performed by Java code, such as mixing Java and native methods, or by making multiple native method calls, this creates race conditions. Running any Java code provides an opportunity for Java threads to be context switched, and conditions established by code before the context switch might be invalid after the context switch. The example from

suffers from exactly this problem.

Establishing Per-Task Context

Migrating Java platform data to native can work well for global singletons, but it doesn’t work for other situations. In the case of the cook operation, the data is built using a sequence of setup calls to mw_settime() and mw_setpower(), followed by a call to mw_cook() that initiates the operation using the parameters previously set up. The library implicitly stores this information in its internal static data. Thus, it’s effectively global.

But no global data exists because the data really belongs to the thread that’s setting up to initiate the cooking operation. In this case, the data needs to be migrated upward to be closer to the calling thread. The setup data doesn’t need to be sent to the microwave library until immediately prior to the call to the mw_cook() function.

Chapter 2 Multitasking Safety 15

Page 27
Image 27
Sun Microsystems 2 manual Establishing Per-Task Context

2 specifications

Sun Microsystems, founded in 1982, was a significant player in the computing industry, best known for its innovative technology solutions and workstations, particularly the Sun-4, which represented a key milestone in the company's history. The Sun-4 architecture, launched in 1987, utilized the SPARC (Scalable Processor Architecture) RISC processor, notable for its high performance and scalability.

One of the primary features of Sun Microsystems' platforms was their ability to efficiently handle multitasking and resource management, making them ideal for enterprise-level applications and development environments. Sun-4 workstations boasted impressive graphics capabilities with the addition of advanced graphical user interfaces, support for color displays, and the SUNVIEW windowing system, which enhanced user experience and productivity.

The Sun-4 systems also supported the SunOS operating system, which was based on UNIX. This operating system was engineered for stability and robustness, offering features like multiuser support, networked environments, and advanced security options. Moreover, SunOS provided seamless integration with various programming languages, including C and C++, facilitating software development that aligned with industry standards.

Another standout characteristic of Sun Microsystems was its commitment to open systems and standards. By providing developers with comprehensive tools and environments, such as the Standardized Application Programming Interface (API) and support for networking protocols, Sun facilitated interoperability among different computing platforms. The emphasis on open architecture also meant that customers could easily upgrade their systems without being locked into proprietary solutions.

Sun Microsystems was also ahead of its time with innovations in network computing. Their workstations were among the first to support network file systems and distributed computing concepts, enabling seamless data sharing across multiple systems. With the introduction of the Network File System (NFS), Sun revolutionized how data was accessed and managed across networks, which played a significant role in the evolving landscape of client-server computing.

In summary, the Sun Microsystems 2 and its successive innovations in workstation technology highlighted the company's forward-thinking approach. By integrating powerful performance with open systems, robust operating systems, and advanced networking capabilities, Sun laid the groundwork for modern computing, influencing various sectors from academia to enterprise solutions. Even after its acquisition by Oracle in 2010, the legacy of Sun Microsystems continues to be felt across the computing industry.