Permission is granted to copy, distribute and/or modify this document.

ਇਸ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਕਾਪੀ, ਵੰਡਣ ਅਤੇ/ਜਾਂ ਸੋਧਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੱਤੀ ਗਈ ਹੈ।


ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ ਦੁਨਿਆ!


The problems with concurrent programming are complex.

ਸਮਕਾਲੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਨਾਲ ਜੁੜੀਆਂ ਸਮੱਸਿਆਵਾਂ ਗੁੰਝਲਦਾਰ ਹਨ।


This program demonstrates the use of threads.

ਇਹ ਪ੍ਰੋਗਰਾਮ ਥ੍ਰੈਡਾਂ ਦੀ ਵਰਤੋਂ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।


Critical sections require careful management to avoid errors.

ਗਲਤੀਆਂ ਤੋਂ ਬਚਣ ਲਈ ਨਾਜ਼ੁਕ ਭਾਗਾਂ ਦਾ ਧਿਆਨ ਨਾਲ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।


Understanding Harmony methods and pointers is essential.

ਹਾਰਮੋਨੀ ਵਿਧੀਆਂ ਅਤੇ ਪੁਆਇੰਟਰਾਂ ਨੂੰ ਸਮਝਣਾ ਜ਼ਰੂਰੀ ਹੈ।


Specifying a lock is a fundamental concept in concurrency.

ਇੱਕ ਲਾਕ ਨਿਰਧਾਰਤ ਕਰਨਾ ਸਮਕਾਲੀਤਾ ਵਿੱਚ ਇੱਕ ਬੁਨਿਆਦੀ ਸੰਕਲਪ ਹੈ।


Various lock implementations exist, each with its own trade-offs.

ਵੱਖ-ਵੱਖ ਲਾਕ ਲਾਗੂਕਰਨ ਮੌਜੂਦ ਹਨ, ਹਰ ਇੱਕ ਦੇ ਆਪਣੇ ਵਪਾਰਕ-ਬੰਦ ਹਨ।


Concurrent data structures are designed for multi-threaded environments.

ਸਮਕਾਲੀ ਡਾਟਾ ਢਾਂਚੇ ਨੂੰ ਮਲਟੀ-ਥ੍ਰੈਡਡ ਵਾਤਾਵਰਣ ਲਈ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ।


Testing concurrent behaviors is crucial for correctness.

ਸਹੀ ਹੋਣ ਲਈ ਸਮਕਾਲੀ ਵਿਵਹਾਰਾਂ ਦੀ ਜਾਂਚ ਕਰਨਾ ਬਹੁਤ ਜ਼ਰੂਰੀ ਹੈ।


Debugging concurrent programs can be challenging.

ਸਮਕਾਲੀ ਪ੍ਰੋਗਰਾਮਾਂ ਨੂੰ ਡੀਬੱਗ ਕਰਨਾ ਚੁਣੌਤੀਪੂਰਨ ਹੋ ਸਕਦਾ ਹੈ।


Conditional waiting is a common technique in synchronization.

ਸ਼ਰਤੀਆ ਇੰਤਜ਼ਾਰ ਸਮਕਾਲੀਕਰਨ ਵਿੱਚ ਇੱਕ ਆਮ ਤਕਨੀਕ ਹੈ।


Reader/writer locks provide a mechanism for shared access.

ਰੀਡਰ/ਰਾਈਟਰ ਲਾਕ ਸਾਂਝੇ ਪਹੁੰਚ ਲਈ ਇੱਕ ਵਿਧੀ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ।


Bounded buffers are used to manage data flow.

ਸੀਮਤ ਬਫਰ ਡਾਟਾ ਪ੍ਰਵਾਹ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ।


Condition variables are essential for thread communication.

ਥ੍ਰੈਡ ਸੰਚਾਰ ਲਈ ਸ਼ਰਤ ਵੇਰੀਏਬਲ ਜ਼ਰੂਰੀ ਹਨ।


Starvation can occur in concurrent systems.

ਸਮਕਾਲੀ ਪ੍ਰਣਾਲੀਆਂ ਵਿੱਚ ਭੁੱਖਮਰੀ ਹੋ ਸਕਦੀ ਹੈ।


Deadlock is a serious problem in concurrent programming.

ਡੈੱਡਲਾਕ ਸਮਕਾਲੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਵਿੱਚ ਇੱਕ ਗੰਭੀਰ ਸਮੱਸਿਆ ਹੈ।


Actors and message passing offer an alternative concurrency model.

ਅਦਾਕਾਰ ਅਤੇ ਸੰਦੇਸ਼ ਪਾਸਿੰਗ ਇੱਕ ਵਿਕਲਪਕ ਸਮਕਾਲੀ ਮਾਡਲ ਪੇਸ਼ ਕਰਦੇ ਹਨ।


Barrier synchronization coordinates multiple threads.

ਬੈਰੀਅਰ ਸਮਕਾਲੀਕਰਨ ਕਈ ਥ੍ਰੈਡਾਂ ਦਾ ਤਾਲਮੇਲ ਕਰਦਾ ਹੈ।


Advanced barrier synchronization techniques exist for complex scenarios.

ਗੁੰਝਲਦਾਰ ਦ੍ਰਿਸ਼ਾਂ ਲਈ ਉੱਨਤ ਬੈਰੀਅਰ ਸਮਕਾਲੀਕਰਨ ਤਕਨੀਕਾਂ ਮੌਜੂਦ ਹਨ।


The program can only take one item at a time.

ਪ੍ਰੋਗਰਾਮ ਸਿਰਫ਼ ਇੱਕ ਵਾਰ ਵਿੱਚ ਇੱਕ ਆਈਟਮ ਲੈ ਸਕਦਾ ਹੈ।


The person has to cross back and forth several times.

ਵਿਅਕਤੀ ਨੂੰ ਕਈ ਵਾਰੀ ਆਉਣ-ਜਾਣ ਕਰਨਾ ਪੈਂਦਾ ਹੈ।


If left to themselves, the goat would eat the cabbage.

ਜੇਕਰ ਉਨ੍ਹਾਂ ਨੂੰ ਇਕੱਲੇ ਛੱਡ ਦਿੱਤਾ ਜਾਵੇ, ਤਾਂ ਬੱਕਰੀ ਗੋਭੀ ਖਾ ਜਾਵੇਗੀ।


Figure 7.1 specifies the intended behavior of a lock.

ਚਿੱਤਰ 7.1 ਇੱਕ ਲਾਕ ਦੇ ਇਰਾਦੇ ਵਾਲੇ ਵਿਵਹਾਰ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।


The acquire() operation waits until the lock is False.

ਅਕਵਾਇਰ() ਓਪਰੇਸ਼ਨ ਉਦੋਂ ਤੱਕ ਇੰਤਜ਼ਾਰ ਕਰਦਾ ਹੈ ਜਦੋਂ ਤੱਕ ਲਾਕ ਗਲਤ ਨਹੀਂ ਹੁੰਦਾ।


The release() operation sets the lock back to False.

ਰਿਲੀਜ਼() ਓਪਰੇਸ਼ਨ ਲਾਕ ਨੂੰ ਦੁਬਾਰਾ ਗਲਤ ਕਰ ਦਿੰਦਾ ਹੈ।


Figure 7.2 shows how locks may be used to implement a critical section.

ਚਿੱਤਰ 7.2 ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਕਿਵੇਂ ਲਾਕਸ ਦੀ ਵਰਤੋਂ ਇੱਕ ਨਾਜ਼ੁਕ ਭਾਗ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।


The code in Figure 7.1 is also in Harmony’s synch module.

ਚਿੱਤਰ 7.1 ਵਿੱਚ ਕੋਡ ਵੀ ਹਾਰਮੋਨੀ ਦੇ ਸਿੰਕ ਮੋਡੀਊਲ ਵਿੱਚ ਹੈ।


The atomically keyword is not available in general programming languages.

ਆਟੋਮਿਕਲੀ ਕੀਵਰਡ ਆਮ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।


Peterson’s algorithm is an implementation of a lock.

ਪੀਟਰਸਨ ਦਾ ਐਲਗੋਰਿਦਮ ਇੱਕ ਲਾਕ ਦਾ ਇੱਕ ਲਾਗੂਕਰਨ ਹੈ।


In Harmony, any statement can be preceded by the atomically keyword.

ਹਾਰਮੋਨੀ ਵਿੱਚ, ਕਿਸੇ ਵੀ ਬਿਆਨ ਤੋਂ ਪਹਿਲਾਂ ਆਟੋਮਿਕਲੀ ਕੀਵਰਡ ਲਗਾਇਆ ਜਾ ਸਕਦਾ ਹੈ।


You can also use atomic statements in your test code.

ਤੁਸੀਂ ਆਪਣੇ ਟੈਸਟ ਕੋਡ ਵਿੱਚ ਪਰਮਾਣੂ ਬਿਆਨਾਂ ਦੀ ਵਰਤੋਂ ਵੀ ਕਰ ਸਕਦੇ ਹੋ।


Locks are the most prevalent and basic form of synchronization.

ਲਾਕ ਸਮਕਾਲੀਕਰਨ ਦਾ ਸਭ ਤੋਂ ਆਮ ਅਤੇ ਬੁਨਿਆਦੀ ਰੂਪ ਹਨ।


Whenever you have a shared data structure, you want to protect it with a lock.

ਜਦੋਂ ਵੀ ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਸਾਂਝਾ ਡਾਟਾ ਢਾਂਚਾ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਇਸਨੂੰ ਇੱਕ ਲਾਕ ਨਾਲ ਸੁਰੱਖਿਅਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ।


That way, when a thread makes modifications to the data structure.

ਇਸ ਤਰ੍ਹਾਂ, ਜਦੋਂ ਇੱਕ ਥ੍ਰੈਡ ਡਾਟਾ ਢਾਂਚੇ ਵਿੱਚ ਸੋਧ ਕਰਦਾ ਹੈ।


A data race happens when multiple threads are trying to access the same variable.

ਇੱਕ ਡਾਟਾ ਰੇਸ ਉਦੋਂ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਕਈ ਥ੍ਰੈਡ ਇੱਕੋ ਜਿਹੇ ਵੇਰੀਏਬਲ ਤੱਕ ਪਹੁੰਚਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹੁੰਦੇ ਹਨ।


In Harmony, this can be done in two ways.

ਹਾਰਮੋਨੀ ਵਿੱਚ, ਇਹ ਦੋ ਤਰੀਕਿਆਂ ਨਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।


To implement locks, multi-core processors provide atomic instructions.

ਲਾਕਸ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ, ਮਲਟੀ-ਕੋਰ ਪ੍ਰੋਸੈਸਰ ਪਰਮਾਣੂ ਹਦਾਇਤਾਂ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ।


The approach is called spinlock, because each thread is “spinning”.

ਇਸ ਪਹੁੰਚ ਨੂੰ ਸਪਿਨਲਾਕ ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਕਿਉਂਕਿ ਹਰੇਕ ਥ੍ਰੈਡ “ਸਪਿਨਿੰਗ” ਕਰ ਰਿਹਾ ਹੈ।


A thread usually does not need to keep explicit track of whether it has a lock or not.

ਇੱਕ ਥ੍ਰੈਡ ਨੂੰ ਆਮ ਤੌਰ 'ਤੇ ਇਸ ਗੱਲ ਦਾ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਧਿਆਨ ਰੱਖਣ ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ ਹੈ ਕਿ ਉਸ ਕੋਲ ਲਾਕ ਹੈ ਜਾਂ ਨਹੀਂ।


ਪ੍ਰੋਗਰਾਮ x ਨੂੰ ਸੱਚਾ ਸੈੱਟ ਕਰਦਾ ਹੈ।


If you run the program through Harmony, it will not find any problems.

ਜੇਕਰ ਤੁਸੀਂ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਹਾਰਮੋਨੀ ਰਾਹੀਂ ਚਲਾਉਂਦੇ ਹੋ, ਤਾਂ ਇਹ ਕੋਈ ਸਮੱਸਿਆ ਨਹੀਂ ਲੱਭੇਗਾ।


Program (b) is concurrent—it executes methods f() and g() in parallel.

ਪ੍ਰੋਗਰਾਮ (ਬੀ) ਸਮਕਾਲੀ ਹੈ—ਇਹ ਵਿਧੀਆਂ f() ਅਤੇ g() ਨੂੰ ਸਮਾਨਾਂਤਰ ਵਿੱਚ ਚਲਾਉਂਦਾ ਹੈ।


This problem is an example of non-determinism.

ਇਹ ਸਮੱਸਿਆ ਗੈਰ-ਨਿਰਧਾਰਨਵਾਦ ਦੀ ਇੱਕ ਉਦਾਹਰਣ ਹੈ।


Methods f() and g() can run in either order.

ਢੰਗ f() ਅਤੇ g() ਕਿਸੇ ਵੀ ਕ੍ਰਮ ਵਿੱਚ ਚੱਲ ਸਕਦੇ ਹਨ।


But since Harmony checks all possible executions, it will always find the problematic one.

ਪਰ ਜਦੋਂ ਤੋਂ ਹਾਰਮੋਨੀ ਸਾਰੀਆਂ ਸੰਭਾਵਿਤ ਕਾਰਜਾਂ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ, ਇਹ ਹਮੇਸ਼ਾ ਸਮੱਸਿਆ ਵਾਲੇ ਨੂੰ ਲੱਭੇਗਾ।


First, the initialization thread (T0) runs and sets the global variable x to True.

ਪਹਿਲਾਂ, ਇਨੀਸ਼ੀਅਲਾਈਜ਼ੇਸ਼ਨ ਥ੍ਰੈਡ (T0) ਚੱਲਦਾ ਹੈ ਅਤੇ ਗਲੋਬਲ ਵੇਰੀਏਬਲ x ਨੂੰ ਸੱਚਾ ਸੈੱਟ ਕਰਦਾ ਹੈ।


Then, the thread running g() runs to completion, setting x to False.

ਫਿਰ, ਥ੍ਰੈਡ ਜੋ g() ਚਲਾ ਰਿਹਾ ਹੈ, ਪੂਰਾ ਹੋਣ ਤੱਕ ਚੱਲਦਾ ਹੈ, x ਨੂੰ ਗਲਤ ਸੈੱਟ ਕਰਦਾ ਹੈ।


Finally, the thread running f() runs, and the assertion fails.

ਅੰਤ ਵਿੱਚ, ਥ੍ਰੈਡ ਜੋ f() ਚਲਾ ਰਿਹਾ ਹੈ, ਚੱਲਦਾ ਹੈ, ਅਤੇ ਦਾਅਵਾ ਅਸਫਲ ਹੋ ਜਾਂਦਾ ਹੈ।


The Harmony finally statement is similar to an assert statement.

ਹਾਰਮੋਨੀ ਅੰਤ ਵਿੱਚ ਬਿਆਨ ਇੱਕ ਦਾਅਵੇ ਦੇ ਬਿਆਨ ਦੇ ਸਮਾਨ ਹੈ।


ਪ੍ਰੋਗਰਾਮ ਇੱਕ ਕ੍ਰਮਵਾਰ ਪ੍ਰੋਗਰਾਮ ਹੈ।


ਸੱਜੇ ਪਾਸੇ ਦਾ ਪ੍ਰੋਗਰਾਮ ਸਮਕਾਲੀ ਹੈ।


Concurrency can make programs faster than sequential ones.

ਸਮਕਾਲੀਤਾ ਪ੍ਰੋਗਰਾਮਾਂ ਨੂੰ ਕ੍ਰਮਵਾਰ ਪ੍ਰੋਗਰਾਮਾਂ ਨਾਲੋਂ ਤੇਜ਼ ਬਣਾ ਸਕਦੀ ਹੈ।


Why are concurrent programs more complicated than sequential ones?

ਸਮਕਾਲੀ ਪ੍ਰੋਗਰਾਮ ਕ੍ਰਮਵਾਰ ਪ੍ਰੋਗਰਾਮਾਂ ਨਾਲੋਂ ਵਧੇਰੇ ਗੁੰਝਲਦਾਰ ਕਿਉਂ ਹਨ?


The execution of a sequential program is usually deterministic.

ਇੱਕ ਕ੍ਰਮਵਾਰ ਪ੍ਰੋਗਰਾਮ ਦਾ ਕਾਰਜ ਆਮ ਤੌਰ 'ਤੇ ਨਿਰਧਾਰਤ ਹੁੰਦਾ ਹੈ।


Bugs are reproducible and thus easy to track down.

ਬੱਗ ਦੁਬਾਰਾ ਪੈਦਾ ਕਰਨ ਯੋਗ ਹੁੰਦੇ ਹਨ ਅਤੇ ਇਸ ਤਰ੍ਹਾਂ ਟਰੈਕ ਕਰਨਾ ਆਸਾਨ ਹੁੰਦਾ ਹੈ।


The output of running concurrent programs depends on how the execution of the various threads are interleaved.

ਸਮਕਾਲੀ ਪ੍ਰੋਗਰਾਮਾਂ ਨੂੰ ਚਲਾਉਣ ਦਾ ਨਤੀਜਾ ਇਸ ਗੱਲ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ ਕਿ ਵੱਖ-ਵੱਖ ਥ੍ਰੈਡਾਂ ਦਾ ਕਾਰਜ ਕਿਵੇਂ ਆਪਸ ਵਿੱਚ ਜੁੜਿਆ ਹੋਇਆ ਹੈ।


Some bugs may occur only occasionally and may never occur when the program is instrumented to find them.

ਕੁਝ ਬੱਗ ਸਿਰਫ਼ ਕਦੇ-ਕਦਾਈਂ ਹੀ ਹੋ ਸਕਦੇ ਹਨ ਅਤੇ ਸ਼ਾਇਦ ਕਦੇ ਵੀ ਨਾ ਹੋਣ ਜਦੋਂ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਉਹਨਾਂ ਨੂੰ ਲੱਭਣ ਲਈ ਤਿਆਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।


In a sequential program, each statement and each function can be thought of as happening atomically.

ਇੱਕ ਕ੍ਰਮਵਾਰ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ, ਹਰੇਕ ਬਿਆਨ ਅਤੇ ਹਰੇਕ ਫੰਕਸ਼ਨ ਨੂੰ ਪਰਮਾਣੂ ਰੂਪ ਵਿੱਚ ਵਾਪਰਨ ਬਾਰੇ ਸੋਚਿਆ ਜਾ ਸਕਦਾ ਹੈ।


The lack of determinism and atomicity in concurrent programs make them not only hard to reason about, but also hard to test.

ਸਮਕਾਲੀ ਪ੍ਰੋਗਰਾਮਾਂ ਵਿੱਚ ਨਿਰਧਾਰਨਵਾਦ ਅਤੇ ਪਰਮਾਣੂਤਾ ਦੀ ਘਾਟ ਉਹਨਾਂ ਨੂੰ ਨਾ ਸਿਰਫ਼ ਵਿਚਾਰਨ ਲਈ ਮੁਸ਼ਕਲ ਬਣਾਉਂਦੀ ਹੈ, ਸਗੋਂ ਜਾਂਚ ਕਰਨਾ ਵੀ ਮੁਸ਼ਕਲ ਬਣਾਉਂਦੀ ਹੈ।


The code prevents multiple threads from executing in the critical section at the same time.

ਇਹ ਕੋਡ ਇੱਕੋ ਸਮੇਂ ਕਈ ਥ੍ਰੈਡਾਂ ਨੂੰ ਨਾਜ਼ੁਕ ਭਾਗ ਵਿੱਚ ਚਲਾਉਣ ਤੋਂ ਰੋਕਦਾ ਹੈ।


Mutual exclusion is a safety property that ensures nothing bad will happen.

ਪਰਸਪਰ ਨਿਵੇਕਲਾਪਣ ਇੱਕ ਸੁਰੱਖਿਆ ਸੰਪਤੀ ਹੈ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਕਿ ਕੁਝ ਵੀ ਗਲਤ ਨਹੀਂ ਹੋਵੇਗਾ।


We want to ensure that eventually something good will happen.

ਅਸੀਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਆਖਰਕਾਰ ਕੁਝ ਚੰਗਾ ਹੋਵੇਗਾ।


If threads in the critical section always leave eventually, then eventually one thread will enter the critical section.

ਜੇਕਰ ਨਾਜ਼ੁਕ ਭਾਗ ਵਿੱਚ ਥ੍ਰੈਡ ਹਮੇਸ਼ਾ ਆਖਰਕਾਰ ਛੱਡ ਦਿੰਦੇ ਹਨ, ਤਾਂ ਆਖਰਕਾਰ ਇੱਕ ਥ੍ਰੈਡ ਨਾਜ਼ੁਕ ਭਾਗ ਵਿੱਚ ਦਾਖਲ ਹੋਵੇਗਾ।


Harmony requires that every execution must be able to reach a state in which all threads have terminated.

ਹਾਰਮੋਨੀ ਦੀ ਲੋੜ ਹੈ ਕਿ ਹਰ ਇੱਕ ਕਾਰਜ ਇੱਕ ਅਜਿਹੀ ਸਥਿਤੀ ਤੱਕ ਪਹੁੰਚਣ ਦੇ ਯੋਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਸਾਰੇ ਥ੍ਰੈਡ ਖਤਮ ਹੋ ਗਏ ਹੋਣ।


A thread can choose to enter a critical section more than once.

ਇੱਕ ਥ੍ਰੈਡ ਇੱਕ ਤੋਂ ਵੱਧ ਵਾਰ ਇੱਕ ਨਾਜ਼ੁਕ ਭਾਗ ਵਿੱਚ ਦਾਖਲ ਹੋਣ ਦੀ ਚੋਣ ਕਰ ਸਕਦਾ ਹੈ।


The lock is like a baton that at most one thread can own at a time.

ਲਾਕ ਇੱਕ ਬੈਟਨ ਵਰਗਾ ਹੈ ਜੋ ਵੱਧ ਤੋਂ ਵੱਧ ਇੱਕ ਥ੍ਰੈਡ ਇੱਕ ਸਮੇਂ ਵਿੱਚ ਮਾਲਕ ਹੋ ਸਕਦਾ ਹੈ।


To enter the critical section, a thread waits until the lock is available.

ਨਾਜ਼ੁਕ ਭਾਗ ਵਿੱਚ ਦਾਖਲ ਹੋਣ ਲਈ, ਇੱਕ ਥ੍ਰੈਡ ਉਦੋਂ ਤੱਕ ਇੰਤਜ਼ਾਰ ਕਰਦਾ ਹੈ ਜਦੋਂ ਤੱਕ ਲਾਕ ਉਪਲਬਧ ਨਹੀਂ ਹੁੰਦਾ।


The thread then executes the critical section.

ਫਿਰ ਥ੍ਰੈਡ ਨਾਜ਼ੁਕ ਭਾਗ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ।


The lockTaken variable suffers from the same sort of race condition.

lockTaken ਵੇਰੀਏਬਲ ਉਸੇ ਤਰ੍ਹਾਂ ਦੀ ਰੇਸ ਦੀ ਸਥਿਤੀ ਤੋਂ ਪੀੜਤ ਹੈ।


Preventing multiple threads from updating the same variable is important.

ਇੱਕੋ ਵੇਰੀਏਬਲ ਨੂੰ ਅਪਡੇਟ ਕਰਨ ਤੋਂ ਕਈ ਥ੍ਰੈਡਾਂ ਨੂੰ ਰੋਕਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ।


Each thread has a flag indicating that the thread is trying to enter the critical section.

ਹਰੇਕ ਥ੍ਰੈਡ ਵਿੱਚ ਇੱਕ ਫਲੈਗ ਹੁੰਦਾ ਹੈ ਜੋ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਥ੍ਰੈਡ ਨਾਜ਼ੁਕ ਭਾਗ ਵਿੱਚ ਦਾਖਲ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ।


If thread i is in the critical section, then flags[i] = True.

ਜੇਕਰ ਥ੍ਰੈਡ i ਨਾਜ਼ੁਕ ਭਾਗ ਵਿੱਚ ਹੈ, ਤਾਂ flags[i] = True।


ਹੱਲ ਤਰੱਕੀ ਦੀ ਉਲੰਘਣਾ ਕਰਦਾ ਹੈ।


Peterson's algorithm implements a critical section.

ਪੀਟਰਸਨ ਦਾ ਐਲਗੋਰਿਦਮ ਇੱਕ ਨਾਜ਼ੁਕ ਭਾਗ ਨੂੰ ਲਾਗੂ ਕਰਦਾ ਹੈ।


Variables may have more bits than the processor’s data bus.

ਵੇਰੀਏਬਲਾਂ ਵਿੱਚ ਪ੍ਰੋਸੈਸਰ ਦੇ ਡਾਟਾ ਬੱਸ ਨਾਲੋਂ ਵੱਧ ਬਿੱਟ ਹੋ ਸਕਦੇ ਹਨ।


Modern processors sometimes re-order load and store operations.

ਆਧੁਨਿਕ ਪ੍ਰੋਸੈਸਰ ਕਈ ਵਾਰ ਲੋਡ ਅਤੇ ਸਟੋਰ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਮੁੜ-ਕ੍ਰਮਬੱਧ ਕਰਦੇ ਹਨ।


The default memory models of C and Java are not sequentially consistent.

C ਅਤੇ Java ਦੇ ਡਿਫਾਲਟ ਮੈਮੋਰੀ ਮਾਡਲ ਕ੍ਰਮਵਾਰ ਇਕਸਾਰ ਨਹੀਂ ਹਨ।


Harmony does not have a return statement.

ਹਾਰਮੋਨੀ ਵਿੱਚ ਇੱਕ ਰਿਟਰਨ ਸਟੇਟਮੈਂਟ ਨਹੀਂ ਹੈ।


If f is a method, list, or dictionary, and x is some Harmony value, then f x, f(x), and f[x] are all the same expression in Harmony.

ਜੇਕਰ f ਇੱਕ ਵਿਧੀ, ਸੂਚੀ, ਜਾਂ ਡਿਕਸ਼ਨਰੀ ਹੈ, ਅਤੇ x ਕੁਝ ਹਾਰਮੋਨੀ ਮੁੱਲ ਹੈ, ਤਾਂ fx, f(x), ਅਤੇ f[x] ਸਾਰੇ ਹਾਰਮੋਨੀ ਵਿੱਚ ਇੱਕੋ ਜਿਹੇ ਸਮੀਕਰਨ ਹਨ।


The machine does not have instructions to atomically increment or decrement values in shared memory locations.

ਮਸ਼ੀਨ ਵਿੱਚ ਸਾਂਝੇ ਮੈਮੋਰੀ ਟਿਕਾਣਿਆਂ ਵਿੱਚ ਮੁੱਲਾਂ ਨੂੰ ਪਰਮਾਣੂ ਰੂਪ ਵਿੱਚ ਵਧਾਉਣ ਜਾਂ ਘਟਾਉਣ ਦੇ ਨਿਰਦੇਸ਼ ਨਹੀਂ ਹਨ।


When running multiple threads, each essentially runs an instantiation of the machine, and they do so in parallel.

ਜਦੋਂ ਕਈ ਥ੍ਰੈਡ ਚੱਲ ਰਹੇ ਹੁੰਦੇ ਹਨ, ਤਾਂ ਹਰੇਕ ਅਸਲ ਵਿੱਚ ਮਸ਼ੀਨ ਦੀ ਇੱਕ ਉਦਾਹਰਣ ਚਲਾਉਂਦਾ ਹੈ, ਅਤੇ ਉਹ ਇਸਨੂੰ ਸਮਾਨਾਂਤਰ ਵਿੱਚ ਕਰਦੇ ਹਨ।


A program is correct if it works for all possible interleavings of threads.

ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਸਹੀ ਹੁੰਦਾ ਹੈ ਜੇਕਰ ਇਹ ਥ੍ਰੈਡਾਂ ਦੇ ਸਾਰੇ ਸੰਭਾਵਿਤ ਇੰਟਰਲੀਵਿੰਗ ਲਈ ਕੰਮ ਕਰਦਾ ਹੈ।


Harmony will try all interleavings and report an error even if only one of those interleavings fails.

ਹਾਰਮੋਨੀ ਸਾਰੇ ਇੰਟਰਲੀਵਿੰਗ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੇਗਾ ਅਤੇ ਇੱਕ ਗਲਤੀ ਦੀ ਰਿਪੋਰਟ ਕਰੇਗਾ ਭਾਵੇਂ ਉਨ੍ਹਾਂ ਇੰਟਰਲੀਵਿੰਗ ਵਿੱਚੋਂ ਸਿਰਫ਼ ਇੱਕ ਹੀ ਅਸਫਲ ਹੋਵੇ।


If the threads run one at a time to completion, then x will be incremented twice and ends up being 2.

ਜੇਕਰ ਥ੍ਰੈਡ ਇੱਕ ਸਮੇਂ ਵਿੱਚ ਪੂਰਾ ਹੋਣ ਲਈ ਚੱਲਦੇ ਹਨ, ਤਾਂ x ਨੂੰ ਦੋ ਵਾਰ ਵਧਾਇਆ ਜਾਵੇਗਾ ਅਤੇ 2 ਹੋ ਜਾਵੇਗਾ।


ਇਸਨੂੰ ਰੇਸ ਦੀ ਸਥਿਤੀ ਵਜੋਂ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ।


When running a program with Harmony, it will report violations of assertions.

ਹਾਰਮੋਨੀ ਨਾਲ ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਚਲਾਉਂਦੇ ਸਮੇਂ, ਇਹ ਦਾਅਵਿਆਂ ਦੀ ਉਲੰਘਣਾ ਦੀ ਰਿਪੋਰਟ ਕਰੇਗਾ।


If one thinks of the assertion as providing the specification of the program, then clearly its implementation does not satisfy its specification.

ਜੇਕਰ ਕੋਈ ਦਾਅਵੇ ਨੂੰ ਪ੍ਰੋਗਰਾਮ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ ਪ੍ਰਦਾਨ ਕਰਨ ਦੇ ਤੌਰ 'ਤੇ ਸੋਚਦਾ ਹੈ, ਤਾਂ ਸਪੱਸ਼ਟ ਹੈ ਕਿ ਇਸਦਾ ਲਾਗੂਕਰਨ ਇਸਦੀ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਸੰਤੁਸ਼ਟ ਨਹੀਂ ਕਰਦਾ ਹੈ।


We could change the specification by changing the assertion as follows: finally(x== 1)or(x== 2)

ਅਸੀਂ ਹੇਠ ਲਿਖੇ ਅਨੁਸਾਰ ਦਾਅਵੇ ਨੂੰ ਬਦਲ ਕੇ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਬਦਲ ਸਕਦੇ ਹਾਂ: ਅੰਤ ਵਿੱਚ(x== 1) ਜਾਂ(x== 2)


This would fix the issue, but more likely it is the program that must be fixed, not the specification.

ਇਹ ਮੁੱਦੇ ਨੂੰ ਠੀਕ ਕਰ ਦੇਵੇਗਾ, ਪਰ ਸੰਭਾਵਤ ਤੌਰ 'ਤੇ ਇਹ ਪ੍ਰੋਗਰਾਮ ਹੈ ਜਿਸਨੂੰ ਠੀਕ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ, ਨਾ ਕਿ ਵਿਸ਼ੇਸ਼ਤਾ।


Harmony programs can usually be easily translated into Python by hand using minor modifications.

ਹਾਰਮੋਨੀ ਪ੍ਰੋਗਰਾਮਾਂ ਨੂੰ ਆਮ ਤੌਰ 'ਤੇ ਛੋਟੇ ਬਦਲਾਵਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੱਥੀਂ ਆਸਾਨੀ ਨਾਲ ਪਾਈਥਨ ਵਿੱਚ ਅਨੁਵਾਦ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।


Run Figure 3.4 using Python. Does the assertion fail?

ਪਾਈਥਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਚਿੱਤਰ 3.4 ਚਲਾਓ। ਕੀ ਦਾਅਵਾ ਅਸਫਲ ਹੁੰਦਾ ਹੈ?


Using a script, run Figure 3.4 1000 times.

ਇੱਕ ਸਕ੍ਰਿਪਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਚਿੱਤਰ 3.4 ਨੂੰ 1000 ਵਾਰ ਚਲਾਓ।


How many times does the assertion fail (if any)?

ਦਾਅਵਾ ਕਿੰਨੀ ਵਾਰ ਅਸਫਲ ਹੁੰਦਾ ਹੈ (ਜੇਕਰ ਕੋਈ ਹੈ)?


Report how many times the assertion fails and what the value of x was for each of the failed runs.

ਰਿਪੋਰਟ ਕਰੋ ਕਿ ਦਾਅਵਾ ਕਿੰਨੀ ਵਾਰ ਅਸਫਲ ਹੁੰਦਾ ਹੈ ਅਤੇ ਹਰੇਕ ਅਸਫਲ ਦੌੜ ਲਈ x ਦਾ ਮੁੱਲ ਕੀ ਸੀ।


Also experiment with other values of N. How large does N need to be for assertions to fail?

N ਦੇ ਹੋਰ ਮੁੱਲਾਂ ਨਾਲ ਵੀ ਪ੍ਰਯੋਗ ਕਰੋ। ਦਾਅਵਿਆਂ ਦੇ ਅਸਫਲ ਹੋਣ ਲਈ N ਨੂੰ ਕਿੰਨਾ ਵੱਡਾ ਹੋਣ ਦੀ ਲੋੜ ਹੈ?


The Harmony compiler, harmony, places the bytecode for file x.hny in file x.hvm.

ਹਾਰਮੋਨੀ ਕੰਪਾਈਲਰ, ਹਾਰਮੋਨੀ, ਫਾਈਲ x.hny ਲਈ ਬਾਈਟਕੋਡ ਨੂੰ ਫਾਈਲ x.hvm ਵਿੱਚ ਰੱਖਦਾ ਹੈ।


The model checker (called Charm) executes the code in x.hvm and places its output in a file called x.hco.

ਮਾਡਲ ਚੈਕਰ (ਚਾਰਮ ਨਾਮਕ) x.hvm ਵਿੱਚ ਕੋਡ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ ਅਤੇ ਇਸਦੇ ਆਉਟਪੁੱਟ ਨੂੰ x.hco ਨਾਮਕ ਫਾਈਲ ਵਿੱਚ ਰੱਖਦਾ ਹੈ।


To understand the problem of concurrent computing, it is important to have a basic understanding of machine instructions, and in our case those of the HVM.

ਸਮਕਾਲੀ ਕੰਪਿਊਟਿੰਗ ਦੀ ਸਮੱਸਿਆ ਨੂੰ ਸਮਝਣ ਲਈ, ਮਸ਼ੀਨ ਨਿਰਦੇਸ਼ਾਂ ਦੀ ਇੱਕ ਬੁਨਿਆਦੀ ਸਮਝ ਹੋਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਅਤੇ ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ HVM ਦੇ।


Harmony values are recursively defined: They include booleans (False and True), integers (but not floating point numbers), strings (enclosed by single or double quotes), sets of Harmony values, lists of Harmony values, dictionaries that map Harmony values to other Harmony values.

ਹਾਰਮੋਨੀ ਮੁੱਲ ਨੂੰ ਮੁੜ ਤੋਂ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਹੈ: ਉਹਨਾਂ ਵਿੱਚ ਬੂਲੀਅਨ (ਗਲਤ ਅਤੇ ਸਹੀ), ਪੂਰਨ ਅੰਕ (ਪਰ ਫਲੋਟਿੰਗ ਪੁਆਇੰਟ ਨੰਬਰ ਨਹੀਂ), ਸਤਰ (ਇੱਕ ਜਾਂ ਦੋਹਰੇ ਹਵਾਲੇ ਵਿੱਚ ਸ਼ਾਮਲ), ਹਾਰਮੋਨੀ ਮੁੱਲਾਂ ਦੇ ਸੈੱਟ, ਹਾਰਮੋਨੀ ਮੁੱਲਾਂ ਦੀਆਂ ਸੂਚੀਆਂ, ਡਿਕਸ਼ਨਰੀਆਂ ਸ਼ਾਮਲ ਹਨ ਜੋ ਹਾਰਮੋਨੀ ਮੁੱਲਾਂ ਨੂੰ ਦੂਜੇ ਹਾਰਮੋਨੀ ਮੁੱਲਾਂ ਨਾਲ ਮੈਪ ਕਰਦੀਆਂ ਹਨ।


ਅੱਜ ਸੂਰਜ ਬਹੁਤ ਚਮਕ ਰਿਹਾ ਹੈ।


ਕੀ ਤੁਸੀਂ ਮੈਨੂੰ ਨਮਕ ਦੇ ਸਕਦੇ ਹੋ?


I am going to the market to buy some vegetables.

ਮੈਂ ਕੁਝ ਸਬਜ਼ੀਆਂ ਖਰੀਦਣ ਲਈ ਬਾਜ਼ਾਰ ਜਾ ਰਿਹਾ ਹਾਂ।


The weather forecast predicts rain for tomorrow.

ਮੌਸਮ ਵਿਭਾਗ ਕੱਲ੍ਹ ਮੀਂਹ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਦਾ ਹੈ।


She is a very talented singer and dancer.

ਉਹ ਇੱਕ ਬਹੁਤ ਹੀ ਪ੍ਰਤਿਭਾਸ਼ਾਲੀ ਗਾਇਕਾ ਅਤੇ ਡਾਂਸਰ ਹੈ।


The company announced its quarterly profits.

ਕੰਪਨੀ ਨੇ ਆਪਣੇ ਤਿਮਾਹੀ ਲਾਭਾਂ ਦਾ ਐਲਾਨ ਕੀਤਾ।


The new technology has revolutionized the industry.

ਨਵੀਂ ਤਕਨਾਲੋਜੀ ਨੇ ਉਦਯੋਗ ਵਿੱਚ ਕ੍ਰਾਂਤੀ ਲਿਆਂਦੀ ਹੈ।


Despite the challenges, they persevered and succeeded.

ਚੁਣੌਤੀਆਂ ਦੇ ਬਾਵਜੂਦ, ਉਨ੍ਹਾਂ ਨੇ ਲਗਨ ਨਾਲ ਕੰਮ ਕੀਤਾ ਅਤੇ ਸਫਲਤਾ ਪ੍ਰਾਪਤ ਕੀਤੀ।


The government is implementing new policies to boost the economy.

ਸਰਕਾਰ ਅਰਥਵਿਵਸਥਾ ਨੂੰ ਹੁਲਾਰਾ ਦੇਣ ਲਈ ਨਵੀਆਂ ਨੀਤੀਆਂ ਲਾਗੂ ਕਰ ਰਹੀ ਹੈ।


The algorithm efficiently sorts the data.

ਐਲਗੋਰਿਦਮ ਡਾਟਾ ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਛਾਂਟਦਾ ਹੈ।


The research paper explores the impact of climate change.

ਖੋਜ ਪੱਤਰ ਜਲਵਾਯੂ ਪਰਿਵਰਤਨ ਦੇ ਪ੍ਰਭਾਵ ਦੀ ਪੜਚੋਲ ਕਰਦਾ ਹੈ।


The complex system requires careful analysis.

ਗੁੰਝਲਦਾਰ ਪ੍ਰਣਾਲੀ ਨੂੰ ਧਿਆਨ ਨਾਲ ਵਿਸ਼ਲੇਸ਼ਣ ਦੀ ਲੋੜ ਹੈ।


The philosophical debate centered on the nature of reality.

ਦਾਰਸ਼ਨਿਕ ਬਹਿਸ ਹਕੀਕਤ ਦੀ ਪ੍ਰਕਿਰਤੀ 'ਤੇ ਕੇਂਦਰਿਤ ਸੀ।


The intricate design of the building is a marvel.

ਇਮਾਰਤ ਦਾ ਗੁੰਝਲਦਾਰ ਡਿਜ਼ਾਈਨ ਇੱਕ ਅਜੂਬਾ ਹੈ।


The economic downturn has affected global markets.

ਆਰਥਿਕ ਮੰਦੀ ਨੇ ਵਿਸ਼ਵ ਬਾਜ਼ਾਰਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕੀਤਾ ਹੈ।


The implications of the new law are far-reaching.

ਨਵੇਂ ਕਾਨੂੰਨ ਦੇ ਪ੍ਰਭਾਵ ਦੂਰ ਤੱਕ ਫੈਲੇ ਹੋਏ ਹਨ।


The quantum physics experiment yielded unexpected results.

ਕੁਆਂਟਮ ਭੌਤਿਕ ਵਿਗਿਆਨ ਦੇ ਪ੍ਰਯੋਗ ਨੇ ਅਚਾਨਕ ਨਤੀਜੇ ਦਿੱਤੇ।


The ethical considerations of artificial intelligence are paramount.

ਆਰਟੀਫੀਸ਼ੀਅਲ ਇੰਟੈਲੀਜੈਂਸ ਦੇ ਨੈਤਿਕ ਵਿਚਾਰ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਹਨ।


The intricate interplay of factors makes prediction difficult.

ਕਾਰਕਾਂ ਦਾ ਗੁੰਝਲਦਾਰ ਆਪਸੀ ਪ੍ਰਭਾਵ ਭਵਿੱਖਬਾਣੀ ਨੂੰ ਮੁਸ਼ਕਲ ਬਣਾਉਂਦਾ ਹੈ।


The historical context is crucial for understanding the event.

ਘਟਨਾ ਨੂੰ ਸਮਝਣ ਲਈ ਇਤਿਹਾਸਕ ਸੰਦਰਭ ਬਹੁਤ ਜ਼ਰੂਰੀ ਹੈ।


The code uses locks to protect shared data structures.

ਇਹ ਕੋਡ ਸਾਂਝੇ ਡਾਟਾ ਢਾਂਚਿਆਂ ਦੀ ਸੁਰੱਖਿਆ ਲਈ ਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


Condition variables are a synchronization primitive.

ਹਾਲਤ ਵੇਰੀਏਬਲ ਇੱਕ ਸਿੰਕ੍ਰੋਨਾਈਜ਼ੇਸ਼ਨ ਪ੍ਰਾਇਮਿਟਿਵ ਹਨ।


ਕਈ ਥ੍ਰੈਡ ਆਸਾਨੀ ਨਾਲ ਡਾਟਾ ਸਾਂਝਾ ਕਰ ਸਕਦੇ ਹਨ।


A critical section only allows one thread at a time.

ਇੱਕ ਨਾਜ਼ੁਕ ਭਾਗ ਸਿਰਫ਼ ਇੱਕ ਸਮੇਂ ਵਿੱਚ ਇੱਕ ਥ੍ਰੈਡ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।


The thread waits until there is no other thread in the critical section.

ਥ੍ਰੈਡ ਉਦੋਂ ਤੱਕ ਇੰਤਜ਼ਾਰ ਕਰਦਾ ਹੈ ਜਦੋਂ ਤੱਕ ਨਾਜ਼ੁਕ ਭਾਗ ਵਿੱਚ ਕੋਈ ਹੋਰ ਥ੍ਰੈਡ ਨਹੀਂ ਹੁੰਦਾ।


ਇੱਕ ਸਪਿਨਲਾਕ ਇੱਕ ਨਾਜ਼ੁਕ ਭਾਗ ਦੀ ਰੱਖਿਆ ਕਰਦਾ ਹੈ।


Sometimes it is useful for a thread to wait for additional conditions.

ਕਈ ਵਾਰ ਇੱਕ ਥ੍ਰੈਡ ਲਈ ਵਾਧੂ ਹਾਲਤਾਂ ਦੀ ਉਡੀਕ ਕਰਨਾ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ।


The alternative to blocking would be active busy waiting.

ਬਲੌਕਿੰਗ ਦਾ ਵਿਕਲਪ ਸਰਗਰਮ ਵਿਅਸਤ ਉਡੀਕ ਹੋਵੇਗਾ।


We would like to find a solution to conditional waiting.

ਅਸੀਂ ਸ਼ਰਤੀਆ ਉਡੀਕ ਦਾ ਹੱਲ ਲੱਭਣਾ ਚਾਹੁੰਦੇ ਹਾਂ।


Reader/writer locks are useful when accessing a shared data structure.

ਰੀਡਰ/ਰਾਈਟਰ ਲਾਕ ਸਾਂਝੇ ਡਾਟਾ ਢਾਂਚੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਵੇਲੇ ਉਪਯੋਗੀ ਹੁੰਦੇ ਹਨ।


ਪੜ੍ਹਨਾ ਸਾਰੀਆਂ ਪਹੁੰਚਾਂ ਦਾ ਬਹੁਗਿਣਤੀ ਹੈ।


Allowing reads to proceed concurrently can significantly improve performance.

ਰੀਡਾਂ ਨੂੰ ਸਮਕਾਲੀ ਤੌਰ 'ਤੇ ਅੱਗੇ ਵਧਣ ਦੀ ਆਗਿਆ ਦੇਣਾ ਪ੍ਰਦਰਸ਼ਨ ਵਿੱਚ ਮਹੱਤਵਪੂਰਨ ਸੁਧਾਰ ਕਰ ਸਕਦਾ ਹੈ।


ਅਸੀਂ ਜੋ ਚਾਹੁੰਦੇ ਹਾਂ ਉਹ ਇੱਕ ਖਾਸ ਕਿਸਮ ਦਾ ਲਾਕ ਹੈ।


ਇਸਨੂੰ ਰੀਡਰ/ਰਾਈਟਰ ਲਾਕ ਕਿਹਾ ਜਾਂਦਾ ਹੈ।


ਇੱਕ ਰੀਡਰ/ਰਾਈਟਰ ਲਾਕ ਇੱਕ ਵਸਤੂ ਹੈ।


There are four operations on a reader/writer lock.

ਇੱਕ ਰੀਡਰ/ਰਾਈਟਰ ਲਾਕ 'ਤੇ ਚਾਰ ਓਪਰੇਸ਼ਨ ਹਨ।


A thread is restricted in how it is allowed to invoke these operations.

ਇੱਕ ਥ੍ਰੈਡ ਨੂੰ ਇਸ ਗੱਲ 'ਤੇ ਪਾਬੰਦੀ ਹੈ ਕਿ ਉਸਨੂੰ ਇਹਨਾਂ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਕਿਵੇਂ ਬੁਲਾਉਣ ਦੀ ਆਗਿਆ ਹੈ।


A problem with this test is that it does not find a problem.

ਇਸ ਟੈਸਟ ਨਾਲ ਸਮੱਸਿਆ ਇਹ ਹੈ ਕਿ ਇਹ ਕੋਈ ਸਮੱਸਿਆ ਨਹੀਂ ਲੱਭਦਾ।


This implementation implements a reader/writer lock as an ordinary lock.

ਇਹ ਲਾਗੂਕਰਨ ਇੱਕ ਰੀਡਰ/ਰਾਈਟਰ ਲਾਕ ਨੂੰ ਇੱਕ ਆਮ ਲਾਕ ਵਜੋਂ ਲਾਗੂ ਕਰਦਾ ਹੈ।


It is better to compare behaviors between the specification and the implementation.

ਨਿਰਧਾਰਨ ਅਤੇ ਲਾਗੂਕਰਨ ਦੇ ਵਿਚਕਾਰ ਵਿਵਹਾਰਾਂ ਦੀ ਤੁਲਨਾ ਕਰਨਾ ਬਿਹਤਰ ਹੈ।


The philosopher picked up the fork on the left.

ਫ਼ਿਲਾਸਫ਼ਰ ਨੇ ਖੱਬੇ ਪਾਸੇ ਵਾਲਾ ਕਾਂਟਾ ਚੁੱਕਿਆ।


Each philosopher requires two forks to eat.

ਹਰ ਫ਼ਿਲਾਸਫ਼ਰ ਨੂੰ ਖਾਣ ਲਈ ਦੋ ਕਾਂਟਿਆਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।


Dijkstra had them repeating this for ever.

ਡਿਕਸਟਰਾ ਨੇ ਉਨ੍ਹਾਂ ਨੂੰ ਇਹ ਹਮੇਸ਼ਾ ਲਈ ਦੁਹਰਾਉਣ ਲਈ ਕਿਹਾ।


If you run it, Harmony complains that the execution may not be able to terminate.

ਜੇਕਰ ਤੁਸੀਂ ਇਸਨੂੰ ਚਲਾਉਂਦੇ ਹੋ, ਤਾਂ ਹਾਰਮੋਨੀ ਸ਼ਿਕਾਇਤ ਕਰਦੀ ਹੈ ਕਿ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਖਤਮ ਨਹੀਂ ਹੋ ਸਕਦਾ।


ਕੀ ਤੁਸੀਂ ਦੇਖਦੇ ਹੋ ਕਿ ਸਮੱਸਿਆ ਕੀ ਹੈ?


Preventing deadlock thus means preventing that one of these conditions occurs.

ਇਸ ਤਰ੍ਹਾਂ ਡੈੱਡਲਾਕ ਨੂੰ ਰੋਕਣ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇਹਨਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹਾਲਤ ਨੂੰ ਵਾਪਰਨ ਤੋਂ ਰੋਕਣਾ।


A thread must request all resources it is going to need at the same time.

ਇੱਕ ਥ੍ਰੈਡ ਨੂੰ ਇੱਕੋ ਸਮੇਂ ਉਹਨਾਂ ਸਾਰੇ ਸਰੋਤਾਂ ਦੀ ਬੇਨਤੀ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ ਜਿਨ੍ਹਾਂ ਦੀ ਉਸਨੂੰ ਲੋੜ ਹੋਵੇਗੀ।


ਲਾਕਾਂ ਵਿੱਚ ਅਜਿਹੀ ਸਮਰੱਥਾ ਨਹੀਂ ਹੁੰਦੀ।


Each philosopher that is about to eat waits on its condition variable.

ਹਰ ਫ਼ਿਲਾਸਫ਼ਰ ਜੋ ਖਾਣ ਵਾਲਾ ਹੈ, ਆਪਣੀ ਹਾਲਤ ਦੇ ਵੇਰੀਏਬਲ 'ਤੇ ਇੰਤਜ਼ਾਰ ਕਰਦਾ ਹੈ।


The No Circular Waiting approach is to prevent a cycle from forming.

ਨੋ ਸਰਕੂਲਰ ਵੇਟਿੰਗ ਪਹੁੰਚ ਇੱਕ ਚੱਕਰ ਬਣਨ ਤੋਂ ਰੋਕਣਾ ਹੈ।


They could prevent deadlock by always picking up the lower numbered fork.

ਉਹ ਹਮੇਸ਼ਾ ਘੱਟ ਨੰਬਰ ਵਾਲਾ ਕਾਂਟਾ ਚੁੱਕ ਕੇ ਡੈੱਡਲਾਕ ਨੂੰ ਰੋਕ ਸਕਦੇ ਹਨ।


This completes all the Havender methods.

ਇਹ ਸਾਰੇ ਹਾਵੈਂਡਰ ਤਰੀਕਿਆਂ ਨੂੰ ਪੂਰਾ ਕਰਦਾ ਹੈ।


If we can prevent more than four diners from starting to eat at the same time.

ਜੇਕਰ ਅਸੀਂ ਚਾਰ ਤੋਂ ਵੱਧ ਖਾਣ ਵਾਲਿਆਂ ਨੂੰ ਇੱਕੋ ਸਮੇਂ ਖਾਣਾ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਰੋਕ ਸਕਦੇ ਹਾਂ।


It uses a counting semaphore to restrict the number of diners.

ਇਹ ਖਾਣ ਵਾਲਿਆਂ ਦੀ ਗਿਣਤੀ ਨੂੰ ਸੀਮਤ ਕਰਨ ਲਈ ਇੱਕ ਗਿਣਤੀ ਸੈਮਾਫੋਰ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


The problem with these kinds of schemes is that one needs to know ahead of time.

ਇਸ ਤਰ੍ਹਾਂ ਦੀਆਂ ਯੋਜਨਾਵਾਂ ਨਾਲ ਸਮੱਸਿਆ ਇਹ ਹੈ ਕਿ ਕਿਸੇ ਨੂੰ ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਪਤਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।


ਕੀ ਤੁਸੀਂ ਸਮੱਸਿਆ ਨੂੰ ਠੀਕ ਕਰ ਸਕਦੇ ਹੋ?


ਹੱਲ ਵਿੱਚ ਇੱਕ ਵਿਧੀ total() ਸ਼ਾਮਲ ਕਰੋ।


Actors are threads that have only private memory.

ਅਦਾਕਾਰ ਉਹ ਥ੍ਰੈਡ ਹਨ ਜਿਨ੍ਹਾਂ ਕੋਲ ਸਿਰਫ਼ ਪ੍ਰਾਈਵੇਟ ਮੈਮੋਰੀ ਹੁੰਦੀ ਹੈ।


Each thread handles one message at a time.

ਹਰ ਥ੍ਰੈਡ ਇੱਕ ਸਮੇਂ ਵਿੱਚ ਇੱਕ ਸੁਨੇਹਾ ਸੰਭਾਲਦਾ ਹੈ।


The actor synchronization model is popular in a variety of programming languages.

ਅਦਾਕਾਰ ਸਿੰਕ੍ਰੋਨਾਈਜ਼ੇਸ਼ਨ ਮਾਡਲ ਕਈ ਤਰ੍ਹਾਂ ਦੀਆਂ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਪ੍ਰਸਿੱਧ ਹੈ।


The file system uses a disk for storage.

ਫਾਈਲ ਸਿਸਟਮ ਸਟੋਰੇਜ ਲਈ ਇੱਕ ਡਿਸਕ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


Each block is identified by its offset or block number.

ਹਰ ਬਲਾਕ ਨੂੰ ਇਸਦੇ ਆਫਸੈੱਟ ਜਾਂ ਬਲਾਕ ਨੰਬਰ ਦੁਆਰਾ ਪਛਾਣਿਆ ਜਾਂਦਾ ਹੈ।


The interface is similar to that of files.

ਇੰਟਰਫੇਸ ਫਾਈਲਾਂ ਦੇ ਸਮਾਨ ਹੈ।


For example, disk read(disk, bno) retrieves the value of block bno on the given disk.

ਉਦਾਹਰਨ ਲਈ, ਡਿਸਕ ਰੀਡ(ਡਿਸਕ, ਬੀਐਨਓ) ਦਿੱਤੇ ਗਏ ਡਿਸਕ 'ਤੇ ਬਲਾਕ ਬੀਐਨਓ ਦਾ ਮੁੱਲ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ।


ਧਿਆਨ ਦਿਓ ਕਿ ਓਪਰੇਸ਼ਨ ਪਰਮਾਣੂ ਨਹੀਂ ਹਨ।


It is up to the file system implementation that this does not happen.

ਇਹ ਫਾਈਲ ਸਿਸਟਮ ਲਾਗੂਕਰਤਾ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ ਕਿ ਅਜਿਹਾ ਨਾ ਹੋਵੇ।


Of course, more than one thread can read the same block at the same time.

ਬੇਸ਼ੱਕ, ਇੱਕੋ ਸਮੇਂ ਇੱਕ ਤੋਂ ਵੱਧ ਥ੍ਰੈਡ ਇੱਕੋ ਬਲਾਕ ਨੂੰ ਪੜ੍ਹ ਸਕਦੇ ਹਨ।


In a Unix file system, the disk is subdivided into three parts.

ਇੱਕ ਯੂਨਿਕਸ ਫਾਈਲ ਸਿਸਟਮ ਵਿੱਚ, ਡਿਸਕ ਨੂੰ ਤਿੰਨ ਭਾਗਾਂ ਵਿੱਚ ਵੰਡਿਆ ਗਿਆ ਹੈ।


The superblock specifies the number of inode blocks and the start of a linked list of free blocks.

ਸੁਪਰਬਲਾਕ ਇਨੋਡ ਬਲਾਕਾਂ ਦੀ ਗਿਣਤੀ ਅਤੇ ਮੁਫਤ ਬਲਾਕਾਂ ਦੀ ਇੱਕ ਲਿੰਕਡ ਸੂਚੀ ਦੀ ਸ਼ੁਰੂਆਤ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ।


In this simplified file system, each inode contains just three pieces of information about the file.

ਇਸ ਸਰਲ ਫਾਈਲ ਸਿਸਟਮ ਵਿੱਚ, ਹਰੇਕ ਇਨੋਡ ਵਿੱਚ ਫਾਈਲ ਬਾਰੇ ਸਿਰਫ਼ ਤਿੰਨ ਜਾਣਕਾਰੀ ਹੁੰਦੀ ਹੈ।


Free blocks are maintained in a simple linked list.

ਮੁਫਤ ਬਲਾਕਾਂ ਨੂੰ ਇੱਕ ਸਧਾਰਨ ਲਿੰਕਡ ਸੂਚੀ ਵਿੱਚ ਬਰਕਰਾਰ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ।


The superblock contains the block number of the first free block.

ਸੁਪਰਬਲਾਕ ਵਿੱਚ ਪਹਿਲੇ ਮੁਫਤ ਬਲਾਕ ਦਾ ਬਲਾਕ ਨੰਬਰ ਹੁੰਦਾ ਹੈ।


Note that the entire file system data structure is essentially a tree of blocks.

ਧਿਆਨ ਦਿਓ ਕਿ ਪੂਰੀ ਫਾਈਲ ਸਿਸਟਮ ਡਾਟਾ ਬਣਤਰ ਅਸਲ ਵਿੱਚ ਬਲਾਕਾਂ ਦਾ ਇੱਕ ਰੁੱਖ ਹੈ।


The implementation uses the actor model.

ਇਹ ਲਾਗੂਕਰਤਾ ਅਦਾਕਾਰ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


The threads synchronize using a plain lock for the free list.

ਥ੍ਰੈਡ ਮੁਫਤ ਸੂਚੀ ਲਈ ਇੱਕ ਸਾਦੇ ਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਮਕਾਲੀ ਹੁੰਦੇ ਹਨ।


File() returns an object containing a queue to communicate with the file system worker threads.

File() ਇੱਕ ਆਬਜੈਕਟ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਫਾਈਲ ਸਿਸਟਮ ਵਰਕਰ ਥ੍ਰੈਡਾਂ ਨਾਲ ਸੰਚਾਰ ਕਰਨ ਲਈ ਇੱਕ ਕਤਾਰ ਹੁੰਦੀ ਹੈ।


The first argument is the maximum number of files.

ਪਹਿਲਾ ਆਰਗੂਮੈਂਟ ਫਾਈਲਾਂ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਗਿਣਤੀ ਹੈ।


The remaining interfaces simply put a request on the request queue.

ਬਾਕੀ ਇੰਟਰਫੇਸ ਸਿਰਫ਼ ਬੇਨਤੀ ਕਤਾਰ ਵਿੱਚ ਇੱਕ ਬੇਨਤੀ ਪਾਉਂਦੇ ਹਨ।


Each worker thread executes an infinite loop, obtaining client requests and handling them.

ਹਰੇਕ ਵਰਕਰ ਥ੍ਰੈਡ ਇੱਕ ਅਨੰਤ ਲੂਪ ਚਲਾਉਂਦਾ ਹੈ, ਗਾਹਕ ਬੇਨਤੀਆਂ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ।


The method first needs to read the block that contains the inode.

ਢੰਗ ਨੂੰ ਪਹਿਲਾਂ ਉਸ ਬਲਾਕ ਨੂੰ ਪੜ੍ਹਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਜਿਸ ਵਿੱਚ ਇਨੋਡ ਹੁੰਦਾ ਹੈ।


Alice sends application messages m1, ..., mn in that order.

ਐਲਿਸ ਐਪਲੀਕੇਸ਼ਨ ਸੁਨੇਹੇ m1, ..., mn ਉਸੇ ਕ੍ਰਮ ਵਿੱਚ ਭੇਜਦੀ ਹੈ।


Bob receives an application message m, then m = mi for some i.

ਜੇਕਰ ਬੌਬ ਇੱਕ ਐਪਲੀਕੇਸ਼ਨ ਸੁਨੇਹਾ m ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ, ਤਾਂ m = mi ਕਿਸੇ i ਲਈ।


Also, if the network is fair and Alice sends application message m, then eventually Bob should deliver m.

ਇਸ ਤੋਂ ਇਲਾਵਾ, ਜੇਕਰ ਨੈੱਟਵਰਕ ਸਹੀ ਹੈ ਅਤੇ ਐਲਿਸ ਐਪਲੀਕੇਸ਼ਨ ਸੁਨੇਹਾ m ਭੇਜਦੀ ਹੈ, ਤਾਂ ਆਖਰਕਾਰ ਬੌਬ ਨੂੰ m ਪ੍ਰਦਾਨ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।


The Alternating Bit Protocol is suitable for our purposes.

ਵਿਕਲਪਿਕ ਬਿੱਟ ਪ੍ਰੋਟੋਕੋਲ ਸਾਡੇ ਉਦੇਸ਼ਾਂ ਲਈ ਢੁਕਵਾਂ ਹੈ।


We assume that there are two unreliable network channels.

ਅਸੀਂ ਮੰਨਦੇ ਹਾਂ ਕਿ ਇੱਥੇ ਦੋ ਗੈਰ-ਭਰੋਸੇਯੋਗ ਨੈੱਟਵਰਕ ਚੈਨਲ ਹਨ।


Alice sends a network message to Bob containing an application message as payload and Alice’s sequence number as header.

ਐਲਿਸ ਬੌਬ ਨੂੰ ਇੱਕ ਨੈੱਟਵਰਕ ਸੁਨੇਹਾ ਭੇਜਦੀ ਹੈ ਜਿਸ ਵਿੱਚ ਇੱਕ ਐਪਲੀਕੇਸ਼ਨ ਸੁਨੇਹਾ ਪੇਲੋਡ ਦੇ ਤੌਰ 'ਤੇ ਅਤੇ ਐਲਿਸ ਦਾ ਸੀਕੁਐਂਸ ਨੰਬਰ ਹੈਡਰ ਦੇ ਤੌਰ 'ਤੇ ਹੁੰਦਾ ਹੈ।


When Bob receives such a network message, Bob returns an acknowledgment to Alice.

ਜਦੋਂ ਬੌਬ ਅਜਿਹਾ ਨੈੱਟਵਰਕ ਸੁਨੇਹਾ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ, ਤਾਂ ਬੌਬ ਐਲਿਸ ਨੂੰ ਇੱਕ ਪੁਸ਼ਟੀਕਰਤਾ ਵਾਪਸ ਕਰਦਾ ਹੈ।


In the protocol, Alice keeps sending the same network message until she receives an acknowledgment with the same sequence number.

ਪ੍ਰੋਟੋਕੋਲ ਵਿੱਚ, ਐਲਿਸ ਉਦੋਂ ਤੱਕ ਇੱਕੋ ਨੈੱਟਵਰਕ ਸੁਨੇਹਾ ਭੇਜਦੀ ਰਹਿੰਦੀ ਹੈ ਜਦੋਂ ਤੱਕ ਉਹ ਉਸੇ ਸੀਕੁਐਂਸ ਨੰਬਰ ਦੇ ਨਾਲ ਇੱਕ ਪੁਸ਼ਟੀਕਰਤਾ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਲੈਂਦੀ।


ਇਸਨੂੰ ਮੁੜ-ਪ੍ਰਸਾਰਣ ਕਿਹਾ ਜਾਂਦਾ ਹੈ।


When she receives the desired sequence number, Alice increments her sequence number.

ਜਦੋਂ ਉਹ ਲੋੜੀਂਦਾ ਸੀਕੁਐਂਸ ਨੰਬਰ ਪ੍ਰਾਪਤ ਕਰਦੀ ਹੈ, ਤਾਂ ਐਲਿਸ ਆਪਣਾ ਸੀਕੁਐਂਸ ਨੰਬਰ ਵਧਾਉਂਦੀ ਹੈ।


She is now ready to send the next message she wants to send to Bob.

ਉਹ ਹੁਣ ਅਗਲਾ ਸੁਨੇਹਾ ਭੇਜਣ ਲਈ ਤਿਆਰ ਹੈ ਜੋ ਉਹ ਬੌਬ ਨੂੰ ਭੇਜਣਾ ਚਾਹੁੰਦੀ ਹੈ।


Bob, on the other hand, waits until he receives a message matching Bob’s sequence number.

ਦੂਜੇ ਪਾਸੇ, ਬੌਬ ਉਦੋਂ ਤੱਕ ਇੰਤਜ਼ਾਰ ਕਰਦਾ ਹੈ ਜਦੋਂ ਤੱਕ ਉਹ ਇੱਕ ਸੁਨੇਹਾ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਲੈਂਦਾ ਜੋ ਬੌਬ ਦੇ ਸੀਕੁਐਂਸ ਨੰਬਰ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ।


If so, Bob delivers the payload in the message and increments his sequence number.

ਜੇਕਰ ਅਜਿਹਾ ਹੈ, ਤਾਂ ਬੌਬ ਸੁਨੇਹੇ ਵਿੱਚ ਪੇਲੋਡ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਅਤੇ ਆਪਣਾ ਸੀਕੁਐਂਸ ਨੰਬਰ ਵਧਾਉਂਦਾ ਹੈ।


Because of the network properties, a one-bit sequence number suffices.

ਨੈੱਟਵਰਕ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੇ ਕਾਰਨ, ਇੱਕ-ਬਿੱਟ ਸੀਕੁਐਂਸ ਨੰਬਰ ਕਾਫ਼ੀ ਹੈ।


We can model each channel as a variable that either contains a network message or nothing.

ਅਸੀਂ ਹਰੇਕ ਚੈਨਲ ਨੂੰ ਇੱਕ ਵੇਰੀਏਬਲ ਦੇ ਤੌਰ 'ਤੇ ਮਾਡਲ ਬਣਾ ਸਕਦੇ ਹਾਂ ਜਿਸ ਵਿੱਚ ਜਾਂ ਤਾਂ ਇੱਕ ਨੈੱਟਵਰਕ ਸੁਨੇਹਾ ਹੁੰਦਾ ਹੈ ਜਾਂ ਕੁਝ ਵੀ ਨਹੀਂ।


Let chan be the channel from Alice to Bob and rchan the channel from Bob to Alice.

ਚੈਨ ਨੂੰ ਐਲਿਸ ਤੋਂ ਬੌਬ ਤੱਕ ਦਾ ਚੈਨਲ ਅਤੇ ਆਰਚੈਨ ਨੂੰ ਬੌਬ ਤੋਂ ਐਲਿਸ ਤੱਕ ਦਾ ਚੈਨਲ ਹੋਣ ਦਿਓ।


netsend(pchan, m) models sending a message m to !pchan.

netsend(pchan, m) ਇੱਕ ਸੁਨੇਹਾ m ਨੂੰ !pchan 'ਤੇ ਭੇਜਣ ਦਾ ਮਾਡਲ ਹੈ।


The method places either m (to model a successful send) or () (to model loss) in !pchan.

ਢੰਗ ਜਾਂ ਤਾਂ m (ਇੱਕ ਸਫਲ ਭੇਜਣ ਦਾ ਮਾਡਲ ਬਣਾਉਣ ਲਈ) ਜਾਂ () (!pchan ਵਿੱਚ ਨੁਕਸਾਨ ਦਾ ਮਾਡਲ ਬਣਾਉਣ ਲਈ) ਰੱਖਦਾ ਹੈ।


Method appsend(net, seq, msg) retransmits {.seq: !seq, .payload: msg} until an acknowledgment for !seq is received.

ਢੰਗ appsend(net, seq, msg) {.seq: !seq, .payload: msg} ਨੂੰ ਉਦੋਂ ਤੱਕ ਮੁੜ-ਪ੍ਰਸਾਰਿਤ ਕਰਦਾ ਹੈ ਜਦੋਂ ਤੱਕ !seq ਲਈ ਇੱਕ ਪੁਸ਼ਟੀਕਰਤਾ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋ ਜਾਂਦਾ।


Figure 22.2 shows how the methods may be used to send and receive a stream of NMSGS messages reliably.

ਚਿੱਤਰ 22.2 ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਕਿਵੇਂ ਢੰਗਾਂ ਦੀ ਵਰਤੋਂ NMSGS ਸੁਨੇਹਿਆਂ ਦੀ ਇੱਕ ਸਟ੍ਰੀਮ ਨੂੰ ਭਰੋਸੇਯੋਗ ਢੰਗ ਨਾਲ ਭੇਜਣ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।


The algorithm efficiently sorts the data.

ਇਹ ਐਲਗੋਰਿਦਮ ਡਾਟਾ ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਛਾਂਟਦਾ ਹੈ।


ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੀ ਪਛਾਣ ਪ੍ਰਦਾਨ ਕਰੋ।


The news reported a significant economic downturn.

ਖ਼ਬਰਾਂ ਵਿੱਚ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਆਰਥਿਕ ਮੰਦੀ ਦੀ ਰਿਪੋਰਟ ਕੀਤੀ ਗਈ।


ਕੀ ਤੁਸੀਂ ਇਸ ਸਮੱਸਿਆ ਵਿੱਚ ਮੇਰੀ ਮਦਦ ਕਰ ਸਕਦੇ ਹੋ?


The company is developing innovative software solutions.

ਕੰਪਨੀ ਨਵੀਨਤਾਕਾਰੀ ਸਾਫਟਵੇਅਰ ਹੱਲ ਵਿਕਸਤ ਕਰ ਰਹੀ ਹੈ।


ਮੈਂ ਤੁਹਾਨੂੰ ਦੇਖ ਕੇ ਬਹੁਤ ਖੁਸ਼ ਹਾਂ।


The research team conducted extensive experiments.

ਖੋਜ ਟੀਮ ਨੇ ਵਿਆਪਕ ਪ੍ਰਯੋਗ ਕੀਤੇ।


ਤੁਹਾਡਾ ਮਨਪਸੰਦ ਰੰਗ ਕਿਹੜਾ ਹੈ?


ਸਰਕਾਰ ਨੇ ਨਵੀਂਆਂ ਨੀਤੀਆਂ ਦਾ ਐਲਾਨ ਕੀਤਾ।


This is a complex mathematical equation.

ਇਹ ਇੱਕ ਗੁੰਝਲਦਾਰ ਗਣਿਤਿਕ ਸਮੀਕਰਨ ਹੈ।


ਮੈਨੂੰ ਕੁਝ ਕਰਿਆਨੇ ਦਾ ਸਮਾਨ ਖਰੀਦਣ ਦੀ ਲੋੜ ਹੈ।


The project requires careful planning and execution.

ਪ੍ਰੋਜੈਕਟ ਲਈ ਧਿਆਨ ਨਾਲ ਯੋਜਨਾਬੰਦੀ ਅਤੇ ਲਾਗੂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।


The weather forecast predicts rain tomorrow.

ਮੌਸਮ ਵਿਭਾਗ ਕੱਲ੍ਹ ਮੀਂਹ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਦਾ ਹੈ।


ਕੀ ਤੁਸੀਂ ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਦੱਸ ਸਕਦੇ ਹੋ?


The scientific community is making significant advancements.

ਵਿਗਿਆਨਕ ਭਾਈਚਾਰਾ ਮਹੱਤਵਪੂਰਨ ਤਰੱਕੀ ਕਰ ਰਿਹਾ ਹੈ।


ਮੈਂ ਬਾਜ਼ਾਰ ਜਾ ਰਿਹਾ ਹਾਂ।


The company's financial performance exceeded expectations.

ਕੰਪਨੀ ਦਾ ਵਿੱਤੀ ਪ੍ਰਦਰਸ਼ਨ ਉਮੀਦਾਂ ਤੋਂ ਵੱਧ ਗਿਆ।


ਕੀ ਤੁਹਾਡੇ ਕੋਈ ਸਵਾਲ ਹਨ?


The new technology has revolutionized the industry.

ਨਵੀਂ ਤਕਨਾਲੋਜੀ ਨੇ ਉਦਯੋਗ ਵਿੱਚ ਕ੍ਰਾਂਤੀ ਲਿਆਂਦੀ ਹੈ।


The implications of the decision are far-reaching.

ਫੈਸਲੇ ਦੇ ਨਤੀਜੇ ਦੂਰ ਤੱਕ ਫੈਲੇ ਹੋਏ ਹਨ।


The program uses bytecode addresses for methods and lambdas.

ਇਹ ਪ੍ਰੋਗਰਾਮ ਵਿਧੀਆਂ ਅਤੇ ਲੈਂਬਡਾ ਲਈ ਬਾਈਟਕੋਡ ਪਤਿਆਂ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


Harmony uses the address of a method variable.

ਹਾਰਮੋਨੀ ਇੱਕ ਵਿਧੀ ਵੇਰੀਏਬਲ ਦੇ ਪਤੇ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


ਹੇਠਾਂ ਦਿੱਤੇ ਦੋ ਪ੍ਰੋਗਰਾਮਾਂ 'ਤੇ ਗੌਰ ਕਰੋ।


In the program on the left, x is a shared variable.

ਖੱਬੇ ਪਾਸੇ ਦੇ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ, x ਇੱਕ ਸਾਂਝਾ ਵੇਰੀਏਬਲ ਹੈ।


Like C, Harmony supports the shorthand p → v for the expression (!p).v.

C ਵਾਂਗ, ਹਾਰਮੋਨੀ (!p).v ਸਮੀਕਰਨ ਲਈ ਸੰਖੇਪ p → v ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ।


A context value captures the state of a thread.

ਇੱਕ ਸੰਦਰਭ ਮੁੱਲ ਇੱਕ ਥ੍ਰੈਡ ਦੀ ਸਥਿਤੀ ਨੂੰ ਕੈਪਚਰ ਕਰਦਾ ਹੈ।


The save expression, when invoked, returns a tuple (e, c).

ਜਦੋਂ ਸੱਦਿਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਸੇਵ ਸਮੀਕਰਨ ਇੱਕ ਟਿਊਪਲ (e, c) ਵਾਪਸ ਕਰਦਾ ਹੈ।


See Figure A.1 for an example of how this could be used to fork a thread.

ਇੱਕ ਥ੍ਰੈਡ ਨੂੰ ਫੋਰਕ ਕਰਨ ਲਈ ਇਸਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ, ਇਸਦੀ ਇੱਕ ਉਦਾਹਰਣ ਲਈ ਚਿੱਤਰ A.1 ਵੇਖੋ।


The stop expression stores the context of the thread.

ਸਟਾਪ ਸਮੀਕਰਨ ਥ੍ਰੈਡ ਦੇ ਸੰਦਰਭ ਨੂੰ ਸਟੋਰ ਕਰਦਾ ਹੈ।


A thread can be forever suspended using stop None or just stop().

ਇੱਕ ਥ੍ਰੈਡ ਨੂੰ ਸਟਾਪ ਨਨ ਜਾਂ ਸਿਰਫ਼ ਸਟਾਪ() ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹਮੇਸ਼ਾ ਲਈ ਮੁਅੱਤਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।


Harmony currently supports the following statements.

ਹਾਰਮੋਨੀ ਵਰਤਮਾਨ ਵਿੱਚ ਹੇਠ ਲਿਖੇ ਬਿਆਨਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ।


Single expression evaluation can be used as a statement.

ਇੱਕ ਸਿੰਗਲ ਸਮੀਕਰਨ ਮੁਲਾਂਕਣ ਨੂੰ ਇੱਕ ਬਿਆਨ ਵਜੋਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ।


ਬਿਆਨ x = 3 ਸਥਿਤੀ ਨੂੰ ਬਦਲਦਾ ਹੈ।


The statement x = y = 3 first updates y, then x.

ਬਿਆਨ x = y = 3 ਪਹਿਲਾਂ y ਨੂੰ ਅਪਡੇਟ ਕਰਦਾ ਹੈ, ਫਿਰ x ਨੂੰ।


The statement a, b = c assumes that c is a tuple.

ਬਿਆਨ a, b = c ਮੰਨਦਾ ਹੈ ਕਿ c ਇੱਕ ਟਿਊਪਲ ਹੈ।


The statement x += 3 loads x, adds 3, and then stores the results in x.

ਬਿਆਨ x += 3 x ਨੂੰ ਲੋਡ ਕਰਦਾ ਹੈ, 3 ਜੋੜਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਨਤੀਜਿਆਂ ਨੂੰ x ਵਿੱਚ ਸਟੋਰ ਕਰਦਾ ਹੈ।


The statement assert b evaluates b and reports an error if b is false.

ਬਿਆਨ ਦਾਅਵਾ b, b ਦਾ ਮੁਲਾਂਕਣ ਕਰਦਾ ਹੈ ਅਤੇ ਜੇਕਰ b ਗਲਤ ਹੈ ਤਾਂ ਇੱਕ ਗਲਤੀ ਦੀ ਰਿਪੋਰਟ ਕਰਦਾ ਹੈ।


A statement can be preceded by the atomically keyword.

ਇੱਕ ਬਿਆਨ ਤੋਂ ਪਹਿਲਾਂ ਐਟੋਮਿਕਲੀ ਕੀਵਰਡ ਲਗਾਇਆ ਜਾ ਸਕਦਾ ਹੈ।


The expression const N = 3 introduces a new constant N with the value 3.

ਸਮੀਕਰਨ const N = 3 ਮੁੱਲ 3 ਦੇ ਨਾਲ ਇੱਕ ਨਵਾਂ ਸਥਿਰ N ਪੇਸ਼ ਕਰਦਾ ਹੈ।


The statement def m a [returns r]: S1; S2: ... defines a new bytecode address constant m.

ਬਿਆਨ def m a [returns r]: S1; S2: ... ਇੱਕ ਨਵਾਂ ਬਾਈਟਕੋਡ ਪਤਾ ਸਥਿਰ m ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ।


The program uses the malloc function to allocate memory.

ਪ੍ਰੋਗਰਾਮ ਮੈਮੋਰੀ ਅਲਾਟ ਕਰਨ ਲਈ ਮੈਲੋਕ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


The bags module provides methods for operating on bags or multisets.

ਬੈਗ ਮੋਡੀਊਲ ਬੈਗਾਂ ਜਾਂ ਮਲਟੀਸੈੱਟਾਂ 'ਤੇ ਕੰਮ ਕਰਨ ਦੇ ਤਰੀਕੇ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।


The Harmony Virtual Machine has a state that includes code, variables, and contexts.

ਹਾਰਮੋਨੀ ਵਰਚੁਅਲ ਮਸ਼ੀਨ ਵਿੱਚ ਇੱਕ ਅਜਿਹੀ ਸਥਿਤੀ ਹੈ ਜਿਸ ਵਿੱਚ ਕੋਡ, ਵੇਰੀਏਬਲ ਅਤੇ ਸੰਦਰਭ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ।


Please provide the necessary documents for verification.

ਕਿਰਪਾ ਕਰਕੇ ਤਸਦੀਕ ਲਈ ਲੋੜੀਂਦੇ ਦਸਤਾਵੇਜ਼ ਪ੍ਰਦਾਨ ਕਰੋ।


The weather forecast predicts rain for tomorrow.

ਮੌਸਮ ਵਿਭਾਗ ਕੱਲ੍ਹ ਲਈ ਮੀਂਹ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਦਾ ਹੈ।


He is a very talented musician and composer.

ਉਹ ਇੱਕ ਬਹੁਤ ਹੀ ਪ੍ਰਤਿਭਾਸ਼ਾਲੀ ਸੰਗੀਤਕਾਰ ਅਤੇ ਸੰਗੀਤਕਾਰ ਹੈ।


The company is expanding its operations globally.

ਕੰਪਨੀ ਵਿਸ਼ਵ ਪੱਧਰ 'ਤੇ ਆਪਣੇ ਕੰਮ ਦਾ ਵਿਸਤਾਰ ਕਰ ਰਹੀ ਹੈ।


Could you please repeat that information?

ਕੀ ਤੁਸੀਂ ਕਿਰਪਾ ਕਰਕੇ ਉਹ ਜਾਣਕਾਰੀ ਦੁਬਾਰਾ ਦੱਸ ਸਕਦੇ ਹੋ?


The new policy will take effect next month.

ਨਵੀਂ ਨੀਤੀ ਅਗਲੇ ਮਹੀਨੇ ਤੋਂ ਲਾਗੂ ਹੋਵੇਗੀ।


The research team is working on a new project.

ਖੋਜ ਟੀਮ ਇੱਕ ਨਵੇਂ ਪ੍ਰੋਜੈਕਟ 'ਤੇ ਕੰਮ ਕਰ ਰਹੀ ਹੈ।


The meeting will be held in the conference room.

ਮੀਟਿੰਗ ਕਾਨਫਰੰਸ ਰੂਮ ਵਿੱਚ ਹੋਵੇਗੀ।


She is fluent in several foreign languages.

ਉਹ ਕਈ ਵਿਦੇਸ਼ੀ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਮੁਹਾਰਤ ਰੱਖਦੀ ਹੈ।


The data is stored in a secure database.

ਡਾਟਾ ਇੱਕ ਸੁਰੱਖਿਅਤ ਡੇਟਾਬੇਸ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।


The government announced new economic reforms.

ਸਰਕਾਰ ਨੇ ਨਵੇਂ ਆਰਥਿਕ ਸੁਧਾਰਾਂ ਦਾ ਐਲਾਨ ਕੀਤਾ।


ਉਹ ਆਪਣੇ ਨਵੀਨਤਾਕਾਰੀ ਵਿਚਾਰਾਂ ਲਈ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ।


The project is facing some unexpected challenges.

ਪ੍ਰੋਜੈਕਟ ਨੂੰ ਕੁਝ ਅਚਾਨਕ ਚੁਣੌਤੀਆਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈ ਰਿਹਾ ਹੈ।


Could you please help me with this task?

ਕੀ ਤੁਸੀਂ ਇਸ ਕੰਮ ਵਿੱਚ ਮੇਰੀ ਮਦਦ ਕਰ ਸਕਦੇ ਹੋ?


The company is committed to sustainable practices.

ਕੰਪਨੀ ਟਿਕਾਊ ਅਭਿਆਸਾਂ ਪ੍ਰਤੀ ਵਚਨਬੱਧ ਹੈ।


The results of the study were published today.

ਅੱਜ ਅਧਿਐਨ ਦੇ ਨਤੀਜੇ ਪ੍ਰਕਾਸ਼ਿਤ ਕੀਤੇ ਗਏ।


The software update includes several new features.

ਸਾਫਟਵੇਅਰ ਅਪਡੇਟ ਵਿੱਚ ਕਈ ਨਵੇਂ ਫੀਚਰ ਸ਼ਾਮਲ ਹਨ।


ਸਿਸਟਮ ਆਪਣੀ ਸੰਰਚਨਾ ਨੂੰ ਅਪਡੇਟ ਕਰਦਾ ਹੈ।


The replica adopts the received history.

ਪ੍ਰਤੀਰੂਪ ਪ੍ਰਾਪਤ ਇਤਿਹਾਸ ਨੂੰ ਅਪਣਾਉਂਦਾ ਹੈ।


If a replica is the head, it adds any requests it has received to its history.

ਜੇਕਰ ਇੱਕ ਪ੍ਰਤੀਰੂਪ ਮੁਖੀ ਹੈ, ਤਾਂ ਇਹ ਆਪਣੀ ਪ੍ਰਾਪਤ ਕੀਤੀਆਂ ਬੇਨਤੀਆਂ ਨੂੰ ਆਪਣੇ ਇਤਿਹਾਸ ਵਿੱਚ ਜੋੜਦਾ ਹੈ।


The model has each replica send its entire history each time it extends its history.

ਮਾਡਲ ਹਰੇਕ ਪ੍ਰਤੀਰੂਪ ਨੂੰ ਹਰ ਵਾਰ ਆਪਣਾ ਪੂਰਾ ਇਤਿਹਾਸ ਭੇਜਦਾ ਹੈ ਜਦੋਂ ਇਹ ਆਪਣੇ ਇਤਿਹਾਸ ਨੂੰ ਵਧਾਉਂਦਾ ਹੈ।


In practice, a predecessor would set up a TCP connection to its successor.

ਅਮਲ ਵਿੱਚ, ਇੱਕ ਪੂਰਵਜ ਆਪਣੇ ਉੱਤਰਾਧਿਕਾਰੀ ਨਾਲ ਇੱਕ TCP ਕਨੈਕਸ਼ਨ ਸਥਾਪਤ ਕਰੇਗਾ।


Another way of modeling is by enumerating all the possible state transitions.

ਮਾਡਲਿੰਗ ਦਾ ਇੱਕ ਹੋਰ ਤਰੀਕਾ ਸਾਰੀਆਂ ਸੰਭਾਵਿਤ ਸਟੇਟ ਤਬਦੀਲੀਆਂ ਦੀ ਗਿਣਤੀ ਕਰਨਾ ਹੈ।


Each type of action is captured using a lambda and a method.

ਹਰੇਕ ਕਿਸਮ ਦੀ ਕਾਰਵਾਈ ਨੂੰ ਇੱਕ ਲੈਂਡਾ ਅਤੇ ਇੱਕ ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੈਪਚਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।


All replicas, except the replica that is immortal and the replicas that have already crashed, can crash.

ਸਾਰੇ ਪ੍ਰਤੀਰੂਪ, ਸਿਵਾਏ ਉਸ ਪ੍ਰਤੀਰੂਪ ਦੇ ਜੋ ਅਮਰ ਹੈ ਅਤੇ ਉਹ ਪ੍ਰਤੀਰੂਪ ਜੋ ਪਹਿਲਾਂ ਹੀ ਕਰੈਸ਼ ਹੋ ਚੁੱਕੇ ਹਨ, ਕਰੈਸ਼ ਹੋ ਸਕਦੇ ਹਨ।


The Harmony action module explores all possible behaviors of such a specification.

ਹਾਰਮੋਨੀ ਐਕਸ਼ਨ ਮੋਡੀਊਲ ਅਜਿਹੇ ਨਿਰਧਾਰਨ ਦੇ ਸਾਰੇ ਸੰਭਾਵਿਤ ਵਿਵਹਾਰਾਂ ਦੀ ਪੜਚੋਲ ਕਰਦਾ ਹੈ।


So, which of the two types of specification do you prefer?

ਤਾਂ, ਤੁਸੀਂ ਦੋ ਕਿਸਮਾਂ ਦੇ ਨਿਰਧਾਰਨ ਵਿੱਚੋਂ ਕਿਹੜਾ ਪਸੰਦ ਕਰਦੇ ਹੋ?


A register is an object that you can read or write.

ਇੱਕ ਰਜਿਸਟਰ ਇੱਕ ਵਸਤੂ ਹੈ ਜਿਸਨੂੰ ਤੁਸੀਂ ਪੜ੍ਹ ਜਾਂ ਲਿਖ ਸਕਦੇ ਹੋ।


In a distributed system, examples include a shared file system or a key/value store.

ਇੱਕ ਵੰਡੇ ਹੋਏ ਸਿਸਟਮ ਵਿੱਚ, ਉਦਾਹਰਨਾਂ ਵਿੱਚ ਇੱਕ ਸਾਂਝਾ ਫਾਈਲ ਸਿਸਟਮ ਜਾਂ ਇੱਕ ਕੁੰਜੀ/ਮੁੱਲ ਸਟੋਰ ਸ਼ਾਮਲ ਹਨ।


Since messages are delivered one at a time to the server, concurrent operations on the shared register appear atomic.

ਕਿਉਂਕਿ ਸੁਨੇਹੇ ਇੱਕ ਸਮੇਂ ਵਿੱਚ ਸਰਵਰ ਨੂੰ ਪ੍ਰਦਾਨ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਸਾਂਝੇ ਰਜਿਸਟਰ 'ਤੇ ਸਮਕਾਲੀ ਓਪਰੇਸ਼ਨ ਪਰਮਾਣੂ ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ।


We would therefore like to find a solution that can survive the crash of a server.

ਇਸ ਲਈ, ਅਸੀਂ ਇੱਕ ਅਜਿਹਾ ਹੱਲ ਲੱਭਣਾ ਚਾਹੁੰਦੇ ਹਾਂ ਜੋ ਇੱਕ ਸਰਵਰ ਦੇ ਕਰੈਸ਼ ਤੋਂ ਬਚ ਸਕੇ।


We will again replicate the register object: Maintain multiple copies.

ਅਸੀਂ ਦੁਬਾਰਾ ਰਜਿਸਟਰ ਆਬਜੈਕਟ ਦੀ ਨਕਲ ਕਰਾਂਗੇ: ਕਈ ਕਾਪੀਆਂ ਬਣਾਈ ਰੱਖੋ।


All write operation will be ordered by a unique logical timestamp.

ਸਾਰੇ ਲਿਖਣ ਓਪਰੇਸ਼ਨ ਇੱਕ ਵਿਲੱਖਣ ਲਾਜ਼ੀਕਲ ਟਾਈਮਸਟੈਂਪ ਦੁਆਰਾ ਆਰਡਰ ਕੀਤੇ ਜਾਣਗੇ।


Each server maintains not only the value of the object, but also the timestamp of its corresponding write operation.

ਹਰੇਕ ਸਰਵਰ ਨਾ ਸਿਰਫ਼ ਵਸਤੂ ਦਾ ਮੁੱਲ ਬਰਕਰਾਰ ਰੱਖਦਾ ਹੈ, ਸਗੋਂ ਇਸਦੇ ਸੰਬੰਧਿਤ ਲਿਖਣ ਓਪਰੇਸ਼ਨ ਦਾ ਟਾਈਮਸਟੈਂਪ ਵੀ ਬਰਕਰਾਰ ਰੱਖਦਾ ਹੈ।


In the first phase, a client asks each server for its current timestamp and value.

ਪਹਿਲੇ ਪੜਾਅ ਵਿੱਚ, ਇੱਕ ਕਲਾਇੰਟ ਹਰੇਕ ਸਰਵਰ ਨੂੰ ਇਸਦੇ ਮੌਜੂਦਾ ਟਾਈਮਸਟੈਂਪ ਅਤੇ ਮੁੱਲ ਲਈ ਪੁੱਛਦਾ ਹੈ।


Distributed consensus is the problem of having a collection of processors agree on a single value over a network.

ਵੰਡਿਆ ਹੋਇਆ ਸਹਿਮਤੀ ਪ੍ਰੋਸੈਸਰਾਂ ਦੇ ਇੱਕ ਸੰਗ੍ਰਹਿ ਦਾ ਇੱਕ ਨੈੱਟਵਰਕ ਉੱਤੇ ਇੱਕ ਸਿੰਗਲ ਮੁੱਲ 'ਤੇ ਸਹਿਮਤ ਹੋਣ ਦਾ ਮੁੱਦਾ ਹੈ।


Each processor proposes a value, which we assume here to be from the set {0, 1}.

ਹਰੇਕ ਪ੍ਰੋਸੈਸਰ ਇੱਕ ਮੁੱਲ ਦਾ ਪ੍ਰਸਤਾਵ ਕਰਦਾ ਹੈ, ਜਿਸਨੂੰ ਅਸੀਂ ਇੱਥੇ ਸੈੱਟ {0, 1} ਤੋਂ ਮੰਨਦੇ ਹਾਂ।


The Harmony compiler analyzes the code for potential issues.

ਹਾਰਮੋਨੀ ਕੰਪਾਈਲਰ ਕੋਡ ਵਿੱਚ ਸੰਭਾਵੀ ਮੁੱਦਿਆਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਦਾ ਹੈ।


The program checks for safety violations during model checking.

ਪ੍ਰੋਗਰਾਮ ਮਾਡਲ ਜਾਂਚ ਦੌਰਾਨ ਸੁਰੱਖਿਆ ਉਲੰਘਣਾਵਾਂ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ।


The compiler generates bytecode from the Harmony source code.

ਕੰਪਾਈਲਰ ਹਾਰਮੋਨੀ ਸੋਰਸ ਕੋਡ ਤੋਂ ਬਾਈਟਕੋਡ ਤਿਆਰ ਕਰਦਾ ਹੈ।


The test program starts a thread for each operation.

ਟੈਸਟ ਪ੍ਰੋਗਰਾਮ ਹਰੇਕ ਓਪਰੇਸ਼ਨ ਲਈ ਇੱਕ ਥ੍ਰੈਡ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ।


The program uses a sequential queue specification.

ਪ੍ਰੋਗਰਾਮ ਇੱਕ ਕ੍ਰਮਵਾਰ ਕਤਾਰ ਨਿਰਧਾਰਨ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


The Harmony compiler also generates HTML output.

ਹਾਰਮੋਨੀ ਕੰਪਾਈਲਰ HTML ਆਉਟਪੁੱਟ ਵੀ ਤਿਆਰ ਕਰਦਾ ਹੈ।


ਪ੍ਰੋਗਰਾਮ ਰੇਸ ਦੀਆਂ ਸਥਿਤੀਆਂ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ।


The manual pages describe the Harmony compiler.

ਮੈਨੂਅਲ ਪੰਨੇ ਹਾਰਮੋਨੀ ਕੰਪਾਈਲਰ ਦਾ ਵਰਣਨ ਕਰਦੇ ਹਨ।


The program uses a lock to protect the critical section.

ਪ੍ਰੋਗਰਾਮ ਨਾਜ਼ੁਕ ਭਾਗ ਦੀ ਰੱਖਿਆ ਲਈ ਇੱਕ ਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


The test program waits for the timestamp to match.

ਟੈਸਟ ਪ੍ਰੋਗਰਾਮ ਟਾਈਮਸਟੈਂਪ ਦੇ ਮੇਲ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰਦਾ ਹੈ।


The program uses a counter to track time.

ਪ੍ਰੋਗਰਾਮ ਸਮੇਂ ਨੂੰ ਟਰੈਕ ਕਰਨ ਲਈ ਇੱਕ ਕਾਊਂਟਰ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


The program spawns threads for concurrent execution.

ਪ੍ਰੋਗਰਾਮ ਸਮਕਾਲੀ ਕਾਰਜਕਾਰੀ ਲਈ ਥ੍ਰੈਡ ਬਣਾਉਂਦਾ ਹੈ।


The program uses a queue implementation with linearization points.

ਪ੍ਰੋਗਰਾਮ ਲੀਨੀਅਰਾਈਜ਼ੇਸ਼ਨ ਪੁਆਇੰਟਾਂ ਦੇ ਨਾਲ ਇੱਕ ਕਤਾਰ ਲਾਗੂਕਰਨ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


ਪ੍ਰੋਗਰਾਮ ਲੀਨੀਅਰਾਈਜ਼ੇਬਿਲਟੀ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ।


ਪ੍ਰੋਗਰਾਮ ਪਰਮਾਣੂ ਓਪਰੇਸ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


ਪ੍ਰੋਗਰਾਮ ਡੈੱਡਲਾਕ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ।


The program analyzes the graph for non-termination.

ਪ੍ਰੋਗਰਾਮ ਗੈਰ-ਸਮਾਪਤੀ ਲਈ ਗ੍ਰਾਫ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਦਾ ਹੈ।


The program uses a shared time variable.

ਪ੍ਰੋਗਰਾਮ ਇੱਕ ਸਾਂਝੇ ਸਮੇਂ ਦੇ ਵੇਰੀਏਬਲ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


ਪ੍ਰੋਗਰਾਮ ਇੱਕ ਮਿਊਟੈਕਸ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


ਪ੍ਰੋਗਰਾਮ ਬਾਈਨਰੀ ਸੈਮਾਫੋਰ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


The program uses a bounded buffer to manage data flow between producers and consumers.

ਇਹ ਪ੍ਰੋਗਰਾਮ ਨਿਰਮਾਤਾਵਾਂ ਅਤੇ ਖਪਤਕਾਰਾਂ ਵਿਚਕਾਰ ਡਾਟਾ ਪ੍ਰਵਾਹ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ ਇੱਕ ਸੀਮਤ ਬਫਰ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


Hoare monitors provide a mechanism for synchronization in concurrent programming.

ਹੋਅਰ ਮਾਨੀਟਰ ਸਮਕਾਲੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਵਿੱਚ ਸਮਕਾਲੀਕਰਨ ਲਈ ਇੱਕ ਵਿਧੀ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ।


A bounded buffer is implemented using Hoare monitors.

ਇੱਕ ਸੀਮਤ ਬਫਰ ਹੋਅਰ ਮਾਨੀਟਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।


The mutex semaphore is acquired when entering a monitor.

ਮਾਨੀਟਰ ਵਿੱਚ ਦਾਖਲ ਹੋਣ ਵੇਲੇ ਮਿਊਟੈਕਸ ਸੈਮਾਫੋਰ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।


Method wait increments the condition’s counter.

ਵਿਧੀ ਉਡੀਕ ਸ਼ਰਤ ਦੇ ਕਾਊਂਟਰ ਨੂੰ ਵਧਾਉਂਦੀ ਹੈ।


The code implements a producer/consumer problem.

ਕੋਡ ਇੱਕ ਨਿਰਮਾਤਾ/ਖਪਤਕਾਰ ਸਮੱਸਿਆ ਨੂੰ ਲਾਗੂ ਕਰਦਾ ਹੈ।


Implementing a reader/writer lock with Hoare monitors is not straightforward.

ਹੋਅਰ ਮਾਨੀਟਰਾਂ ਨਾਲ ਇੱਕ ਰੀਡਰ/ਰਾਈਟਰ ਲਾਕ ਨੂੰ ਲਾਗੂ ਕਰਨਾ ਸਿੱਧਾ ਨਹੀਂ ਹੈ।


The simplest solution would be to peek at the counters.

ਸਭ ਤੋਂ ਸੌਖਾ ਹੱਲ ਕਾਊਂਟਰਾਂ 'ਤੇ ਝਾਤ ਮਾਰਨਾ ਹੋਵੇਗਾ।


The alternative is for the reader/writer implementation to keep track of that state explicitly.

ਵਿਕਲਪ ਰੀਡਰ/ਰਾਈਟਰ ਲਾਗੂਕਰਨ ਲਈ ਉਸ ਸਥਿਤੀ ਦਾ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਧਿਆਨ ਰੱਖਣਾ ਹੈ।


Concurrency can be improved if a thread downgrades its write lock to a read lock.

ਸਮਕਾਲੀਤਾ ਵਿੱਚ ਸੁਧਾਰ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਜੇਕਰ ਇੱਕ ਥ੍ਰੈਡ ਆਪਣੇ ਲਿਖਣ ਲਾਕ ਨੂੰ ਇੱਕ ਰੀਡ ਲਾਕ ਵਿੱਚ ਘਟਾਉਂਦਾ ਹੈ।


I received considerable help and inspiration from various people.

ਮੈਨੂੰ ਕਈ ਲੋਕਾਂ ਤੋਂ ਬਹੁਤ ਮਦਦ ਅਤੇ ਪ੍ਰੇਰਨਾ ਮਿਲੀ।


He also wrote the first version of the behavior automaton generator.

ਉਸਨੇ ਵਿਵਹਾਰ ਆਟੋਮੈਟਨ ਜਨਰੇਟਰ ਦਾ ਪਹਿਲਾ ਸੰਸਕਰਣ ਵੀ ਲਿਖਿਆ।


I have had lots of discussions with him about a wide range of improvements.

ਮੈਂ ਉਸ ਨਾਲ ਸੁਧਾਰਾਂ ਦੀ ਇੱਕ ਵਿਸ਼ਾਲ ਸ਼੍ਰੇਣੀ ਬਾਰੇ ਬਹੁਤ ਸਾਰੀਆਂ ਗੱਲਬਾਤ ਕੀਤੀਆਂ ਹਨ।


They also developed much of that web site.

ਉਨ੍ਹਾਂ ਨੇ ਉਸ ਵੈੱਬਸਾਈਟ ਦਾ ਬਹੁਤ ਸਾਰਾ ਹਿੱਸਾ ਵੀ ਵਿਕਸਤ ਕੀਤਾ।


ਉਸਦੀਆਂ ਸੂਝ-ਬੂਝ ਬਹੁਤ ਕੀਮਤੀ ਰਹੀਆਂ ਹਨ।


Most of what I know about concurrent programming I learned from my colleague.

ਸਮਕਾਲੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਬਾਰੇ ਮੈਂ ਜੋ ਕੁਝ ਜਾਣਦਾ ਹਾਂ, ਉਹ ਮੈਂ ਆਪਣੇ ਸਹਿਕਰਮੀ ਤੋਂ ਸਿੱਖਿਆ।


ਉਸਨੇ ਸੁਝਾਅ ਦਿੱਤਾ ਕਿ ਮੈਂ ਇਹ ਕਿਤਾਬ ਲਿਖਾਂ।


Being a foremost security expert, he also assisted significantly.

ਇੱਕ ਪ੍ਰਮੁੱਖ ਸੁਰੱਖਿਆ ਮਾਹਰ ਹੋਣ ਦੇ ਨਾਤੇ, ਉਸਨੇ ਵੀ ਮਹੱਤਵਪੂਰਨ ਸਹਾਇਤਾ ਕੀਤੀ।


I first demonstrated Harmony to the students.

ਮੈਂ ਪਹਿਲਾਂ ਵਿਦਿਆਰਥੀਆਂ ਨੂੰ ਹਾਰਮੋਨੀ ਦਾ ਪ੍ਰਦਰਸ਼ਨ ਕੀਤਾ।


I would like to thank my family who had to suffer.

ਮੈਂ ਆਪਣੇ ਪਰਿਵਾਰ ਦਾ ਧੰਨਵਾਦ ਕਰਨਾ ਚਾਹਾਂਗਾ ਜਿਨ੍ਹਾਂ ਨੂੰ ਦੁੱਖ ਝੱਲਣਾ ਪਿਆ।