23.4k views
2 votes
create a stack of 10 elements. use two threads that access the stack pop()/top() function to print out elements sequentially (not in a random manner such that one element print out twice and the other is lost).

User Ajobi
by
8.1k points

1 Answer

2 votes

Answer:

To create aHere is an example implementation in Python of using a stack with two threads to print out elements sequentially:

import threading

import queue

stack = queue.LifoQueue(10) # create a stack of 10 elements

for i in range(10):

stack.put(i) # fill the stack with 0 to 9

def popFromStack():

while not stack.empty():

item = stack.get()

print(item)

def topOfStack():

while not stack.empty():

item = stack.get()

print(item)

stack.put(item) # put back the item to keep it in the stack

t1 = threading.Thread(target=popFromStack)

t2 = threading.Thread(target=topOfStack)

t1.start()

t2.start()

t1.join()

t2.join()

One thread pops elements from the stack using the get() function until the stack is empty, while the other thread accesses the top of the stack using the get() and put() functions to keep the item in the stack.

Note that the order in which items are printed depends on how the threads are scheduled by the operating system. If you want to ensure that the output is always in the same order, you can use a lock to control access to the shared stack.

Step-by-step explanation:

User Tiemen
by
7.9k points