1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
nika2105 [10]
3 years ago
8

In the following code, use a lock to protect any data that might need protecting. Keep your critical sections as small as possib

le. (10%) int flag = 0; int a = 0; void thread_a(){ a += 2; Flag = 1; } 1 void thread_b(){ int b = 0; if (flag) { b++; } b += 3; a -= b; }
Computers and Technology
1 answer:
swat323 years ago
8 0

Answer:

A mutex is used here.

A mutex is a locking mechanism set before using a shared resource and is released after using the shared resource. When the lock is set, only one task accesses the mutex.

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<pthread.h>

#include<unistd.h>

pthread_t tid[2];

int flag=0;

int a = 0;

pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;

void *thread_a(void *arg)

{

pthread_mutex_lock(&lock);

a += 2;

pthread_mutex_unlock(&lock);

flag = 1;

return NULL;

}

void *thread_b(void *arg)

{

int b = 0;

if(flag){

b++;

}

b += 3;

pthread_mutex_lock(&lock);

a -= b;

pthread_mutex_unlock(&lock);

return NULL;

}

int main()

{

while(1) {

pthread_create(&tid[0],NULL,thread_a,NULL);

pthread_create(&tid[1],NULL,thread_b,NULL);

sleep(1);

}

pthread_exit(NULL);

return 0;

}

You might be interested in
Banking Account
satela [25.4K]

Answer:

Here is the Python script solution.

Explanation:

#!/usr/bin/python

"""Types of bank accounts"""

# Assignment:

# Bank Account Manager - Create a class called Account which will be an abstract

# class for three other classes called CheckingAccount, SavingsAccount and

# BusinessAccount. Manage credits and debits from these accounts through an ATM

# style program.

from __future__ import print_function

def pct_to_dec(num):

"""Returns decimal version of percent"""

dec = float(num) / 100

return dec

class Account(object):

"""Creates an Account"""

def __init__(self, balance, int_rate, act_type, min_balance, **kwargs):

self.balance = balance

self.int_rate = int_rate

self.act_type = act_type

self.min_balance = min_balance

super(Account, self).__init__(**kwargs)

def __str__(self):

"""Returns formatted account type and balance"""

# Charge $25 fee if balance drops below minimum

if self.balance < self.min_balance:

self.balance -= 25

# Add interest

self.balance += round(self.balance * pct_to_dec(self.int_rate), 2)

return '{0}: ${1}'.format(self.act_type, self.balance)

class CheckingAccount(Account):

"""Creates a CheckingAccount Account"""

def __init__(self, **kwargs):

super(CheckingAccount, self).__init__(**kwargs)

class SavingsAccount(Account):

"""Creates a SavingsAccount Account"""

def __init__(self, **kwargs):

super(SavingsAccount, self).__init__(**kwargs)

class BusinessAccount(Account):

"""Creates a BusinessAccount Account"""

def __init__(self, **kwargs):

super(BusinessAccount, self).__init__(**kwargs)

# pylint: disable=C0103

ca1 = CheckingAccount(balance=500, int_rate=0.25, act_type='Checking Account',

min_balance=0)

sa1 = SavingsAccount(balance=50, int_rate=0.50, act_type='Savings Account',

min_balance=0)

ba1 = BusinessAccount(balance=4000, int_rate=0.75, act_type='Business Account',

min_balance=5000)

# Month #1 statement, initial deposits plus interest

print(ca1)

print(sa1)

print(ba1)

print('-------------')

# Month #2 statement plus interest

# Make deposit into checking

setattr(ca1, 'balance', (ca1.balance + 1000))

# Withdraw from checking

setattr(ca1, 'balance', (ca1.balance - 500))

# Make a deposit into savings

setattr(sa1, 'balance', (sa1.balance + 100))

print(ca1)

print(sa1)

print(ba1)

print('-------------')

# Month #3 statement plus interest

# Make deposit into checking

setattr(ca1, 'balance', (ca1.balance + 2500))

# Withdraw from checking

setattr(ca1, 'balance', (ca1.balance - 700))

# Make a deposit into savings

setattr(sa1, 'balance', (sa1.balance + 100))

# Make a deposit into business

setattr(ba1, 'balance', (ba1.balance + 1000))

print(ca1)

print(sa1)

print(ba1)

4 0
4 years ago
Lance is at a bus station. his friend is using the atm machine to withdraw some money. lance notices a stranger deceptively watc
stich3 [128]

The person watching Lances friend typing the ATM pin is an example of shoulder browsing. Lances friend should change the ATM pin.

<h3>What does ATM mean?</h3>

This is known as automated teller machine. It is said to be a kind of unique computer that makes it easy to manage a bank account holder's money.

Based on the above, The person watching Lances friend typing the ATM pin is an example of shoulder browsing. Lances friend should change the ATM pin so that his funds will not be stolen.

Learn more about ATM from

brainly.com/question/12629434

#SPJ4

4 0
2 years ago
Read 2 more answers
In the LC-3, how many memory words are used to store the string "rainbow"?
oksian1 [2.3K]
The number of memory words used to store the string "rainbow" is 8.
5 0
3 years ago
Why is the keyboard calledQWERTY
taurus [48]
The standard QWERTY layout keyboard is called 'QWERTY' because on the top line of the keyboard the first 6 letters from chronological left to right order are; Q, W, E, R, T, and Y.

Or...if you're wondering why it's QWERTY and not ABCDEF, it's because when typing with the alphabetical format, many of the keys would clash with each other due to the arrangement of keys on the original typewriter. The QWERTY layout became so popular, it was the standardized layout for typewriters, and even keyboards today.
4 0
3 years ago
Read 2 more answers
Is this statement true or false? You can apply only one of these at a time: underline, bold, or italics. true false
Lelechka [254]
I think false not sure but let other people help u answer and u can decide
8 0
3 years ago
Other questions:
  • Which port can connect you to the Internet through a telephone line?
    6·1 answer
  • One of the major advantages of digital photography is the ability to see the shot as soon as you take it.
    13·1 answer
  • A plan to budget time for studying and activities is referred to as
    15·1 answer
  • 12. Noodle Tools is a website that
    8·1 answer
  • PLZ HELP ME! What is a false statement about online time?
    9·1 answer
  • You recently discovered that Marketing1 can connect to Admin1, and Admin1 can connect to Marketing1, but neither of these comput
    11·1 answer
  • Three common risk factors for young drivers and how you plan to minimize these factors.
    13·1 answer
  • I'd: 9872093250, password: qqqqq, join the meeting​
    11·1 answer
  • Write a program that reads 20 integers from the user into an array and uses a function arrayMinimum that accepts an integer arra
    5·1 answer
  • What is control structure write it's types​ .
    15·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!