Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

More political philosophy about competition or collaboration..

0 views
Skip to first unread message

amin...@gmail.com

unread,
Jun 21, 2020, 4:24:46 PM6/21/20
to
Hello,


More political philosophy about competition or collaboration..

I am a white arab, and i think i am more smart, and today
i will talk about do we have to be collaboration or competition ?
so as you are noticing that nationalism and individualism are
too much competition and communism and socialism are too much
collaboration, so we have to be more smart since i think that
the best ideology is to seek a balance between competition and
collaboration and since this way of doing also permits us to
avoid to be a violent society by still being good for creativity, innovation, adaptability and speed of progress, i also think in capitalism the price of internet has gotten cheap and the price of computers has gotten cheap, so we are able today to access internet
with a low price and benefit from "collaboration" in internet,
for example look at me, i have invented many scalable algorithms and i have decided to share some of them with the others, and
it is of course collaboration, so look for example at the my following inventions of scalable algorithms that i have shared with others, here they are:

https://sites.google.com/site/scalable68/scalable-mlock

https://sites.google.com/site/scalable68/scalable-reference-counting-with-efficient-support-for-weak-references

https://sites.google.com/site/scalable68/scalable-rwlock

https://sites.google.com/site/scalable68/scalable-rwlock-that-works-accross-processes-and-threads


Also i have decided to not share others of my scalable algorithms and it is competition, so i am seeking like a balance between collaboration and competition.

More political philosophy about Communism..

There is one big problem with communism, and of communism of China, you can know about it by contrasting a too centralized and not too centralized and by logically inferring the advantages and disadvantages, the main problem of communism is a problem of diversity, and what is it to be the right diversity? and now you are understanding that to be more efficient and since i am thinking and writing rapidly and this is the constraint, i have to proceed like by proving by logical contradiction, so how can i make you feel the main problem of Communism of China or Communism? so by like a proof by logical contradiction i will ask the following: can you learn what is darkness by just looking and analyzing the lightness ? so now you are immediatly noticing that
we are also learning from the darkness and we are also learning from lightness ! so i think this diversity is necessary ! because it is right
that we have to know how to prevent mistakes, but we are also learning by mistakes ! and i say that both the way of prevention and the way of making mistakes are very important ! so this is the main problem of dictatorship of Communism, it is too centralized and it is lacking on diversity and it is thus lacking on both the way of learning by mistakes and the way of prevention, and i say that in Democracy people has to be prepared to learn by making mistakes and by being prevention ! i will
give you an example so that you understand rapidly, read the following
about this big problem or weakness of being too centralized of dictatorship of Communism:

About agility and flexibility..

We have to be more smart, so i will invite you to
look at the following video about the Israel army:

Why is the ISRAELI ARMY so POWERFUL? - VisualPolitik EN

https://www.youtube.com/watch?v=jdgg0uDhrOs&t=450s


You will notice that the english person that is talking
in the video is not "technical" about the methodology and is
not speaking about the "inside" of the methodology,
and the methodology of the Israel army is agility
and flexibility that comes from the following, read my following
posting to understand about it:

Managing complex programs – standardize and decentralize for efficiency and agility

Read more here:

http://www.reddal.com/insights/managing-complex-programs-standardize-and-decentralize-for-agile-control/

And notice that the web link above is related to the following agile methodology:

What is agile methodology? Modern software development explained

Read more here on InfoWorld:

https://www.infoworld.com/article/3237508/what-is-agile-methodology-modern-software-development-explained.html


More political philosophy about Democracy..

You have to understand more deeply Democracy, since Donald Trump is not here to please "all" americans, but we have to know about the essence
of Democracy, because Democracy is here because of constraints, since
there is a characteristics in morality that is a first protecting wall and there is a characteristic in Democracy that is a second protecting wall(read below to notice it), but you have to understand the essence of morality and the essence of Democracy, because Democracy doesn't mean that it is people that choose, because it is not in accordance with the essence of morality that must be the King(read below to notice it), since Democracy has been choosen because it is a system that is better at avoiding corruption than dictatorship(and corruption is also lack of efficiency of governance) and Democracy is a system that tries to give a choice and a voice that is a right , but our "duty" in Democracy is that we have not to be "extremism" that harms Democracy. So this is why i think that Donald Trump is not extremism of neo-nazism or white supremacism that harms Democracy, so we have to be patience and tolerance that is in accordance with Democracy and Morality.

More precision about political philosophy about Democracy..

You have to know about abstract reasoning, so when
i am saying below that Democracy is like morality that is a diversity, so you have to understand that it is abstract reasoning, because
the essence of morality is perfectioning towards absolute
perfection, and democracy is also an acts of perfectioning, so
a logical analogy can be made, this is why it is what we call abstract reasoning, so I think i am a white arab that is more smart, and
i will explain more Democracy, you have to know that Democracy
needs to advance with more and more perfection towards absolute perfection so that to solve all our problems, so then Democracy needs responsability from the people, and Democracy needs meritocracy , so then it needs capitalism, and read my following logical reasoning to notice it, please read it carefully and think about it deeply:

From where people get a correct judgment in Democracy ?

So you are noticing that to be able to be good judgment in Democracy, you have to be correct "Elitism" that guides people, and you have to be Meritocracy to be able to be the necessary quality or perfection, but then you are noticing that to be able to be Meritocracy there must be
a reward for the merit, by for example rewarding by giving more
money.

Now why to be Democracy ?

I think that we have to be more smart and notice that
Democracy is also smart, the big benefits of democracy that it is also like a morality that is a diversity that prioritize by giving weights to
some important things and processes to be able to succeed, for example
if i ask a question of how to be less corruption ? i think
that Democracy is an enhanced system that fights corruption
more efficiently than dictatorship, i think this is
understandable because to be able to "escape" a local maximum
towards a global maximum(like in artificial intelligence) on efficiency of fighting corruption (and corruption also means lack of efficiency), we have to be able to vote for another political party that is more apt and more efficient at fighting corruption, this is why i think that democracy is better at fighting corruption, also i think that in democracy the governance must be a "competent" governance
this is how we will enhance democracy to be the best.

More political philosophy about morality..

I think i am more smart, and i think that "confidence" is part
of the game of being a society or humanity, so we have to know how to
bring confidence so that the society and humanity be able to work correctly, and so that to bring confidence we have to know how to be the right tolerance and the right patience, and since also we are not all beautiful, read the following to notice it:

Not everyone is beautiful

https://theconversation.com/not-everyone-is-beautiful-35915


So confidence must take into account this fact and be the right tolerance and patience that bring confidence in the system.


More precision about exponential progress and exponential growth and more, read again:

Here is the 6 D’s of Exponential Growth:

Digitalization: Once something goes from physical to digital, it gains the ability to grow exponentially.

Deception: Initial exponential growth is such small increases (.01 to .02) that it goes largely unnoticed.

Disruption: Either a new market is created, or an old one is overturned. You either disrupt yourself, or you are disrupted.

Demonetization: The major assets in the industry will become free. Free music, free reading, free communication.

Dematerialization: Removal of the original product entirely, lumping alarm clocks, cameras, notebooks, and phones into one smartphone.
Democratization: The costs drop so low that the technology becomes available to everyone.

Read more here:

The 6 Ds of Tech Disruption: A Guide to the Digital Economy

https://singularityhub.com/2016/11/22/the-6-ds-of-tech-disruption-a-guide-to-the-digital-economy/?fbclid=IwAR1Jx4VJYvIce-BJXeVcajBYjwdKvvP_2y4WOd-2DEtGvXnOye0yzkQVdQU&utm_content=bufferb9891&utm_medium=social&utm_source=facebook-hub&utm_campaign=buffer

Also capitalism switches from linear to exponential growth

Read more here:

http://parisinnovationreview.com/articles-en/capitalism-switches-from-linear-to-exponential-growth

And read the following:

Exponential Progress: Can We Expect Mind-Blowing Changes In The Near Future

https://www.youtube.com/watch?v=HfM5HXpfnJQ


But as you have just noticed that it is also related to my following thoughts:

The future of innovation is in software

I keep reading about how the future will be shaped by new cheaper fuel or amazing new medications. I believe that we are misreading the trends. Yes, we will have better medications and cheaper fuel in the future. However, I believe we are clearly in the mist of an information revolution. The future will be shaped by software, defined broadly.

Specifically, I believe that:

Tele-work, tele-play, tele-learning will soon represent 80% of our lives.

There is much more room for innovation in software than in hardware.

There are few ways to build a house, but many more ways to build a virtual house.

Read more here:

https://lemire.me/blog/2008/10/27/the-future-of-innovation-is-in-software/

And this related to my following thoughts:

Dematerialising the future: what role can technology and consumers play?

I have just posted before about Dematerialization Through Services,
read it here:

https://groups.google.com/forum/#!topic/soc.culture.usa/rVZUcghUe5E

The above makes it clear that the evidence indicates that
‘dematerialization through services’ is not a valid policy for
reducing carbon emissions.

But Dematerialising is still important, read the following to notice it:

Dematerialising the future: what role can technology and consumers play?

https://www.theguardian.com/sustainable-business/dematerialising-future-technology-consumers

Also read my following thoughts to notice:

About capitalism and the positive correlation between economic growth and environmental performance..

As an economy expands, resource usage becomes increasingly efficient and economies tend to move away from ecologically harmful behavior, while raising the standard of living of its participants. In fact, the 2018 Yale Environmental Performance Index shows a clear positive correlation between economic growth and environmental performance, read about it here:

https://epi.envirocenter.yale.edu/2018/report/category/hlt

So i think that we are on the right path, so as you are noticing that we have to dematerialize much more so that to avoid Environmental problems, but how will look like our near future that will be much more dematerialized ? look here in the following video to notice that one of our fellow techlead and software developer is doing it by much more dematerializing his life and he is happy by doing it:

My minimalist apartment (as a millionaire)

https://www.youtube.com/watch?v=EUeqHhbQWFc

More political philosophy about civilization..

I am a white arab, and i think i am more smart and i am an inventor of many scalable algorithms, but today i will speak about a very important thing and it is how to build a civilization, because i think that we have to be smart and notice that so that to build a civilization there is a very important requirement and it is that it must be an effort of
building a civilization, so we have not to be like a coward that neglect
to be this effort of building a civilization, so the effort of building a civilization is so important, so we have to be responsability,
and also we have to know by how we have to be guided to this effort of
building a civilization, so we have to be guided by the good taste
that also permits to be efficiently selective to be able to be a greater quality or perfection and we have to be not violence that permits to be
less individualistic and that permits to be more order and that permits to be more organized. And read the following about the good taste:

Why we should stand up for good taste

https://www.bbc.com/culture/article/20140605-what-makes-good-taste

So as you will notice by reading my following thoughts, that i am also a good taste and i am also this effort of building a civilization by also being R&D((Research and development), since as you will read below that i have invented many scalable algorithms and there implementations..

About my methodology and my pedagogy..

I have just written the following:

----------------------------------------------------------------------
More political philosophy about Pedagogy..

I am a white arab, and i think i am more smart, but today
i will explain my kind of methodology of learning: i am learning
by implementing efficiently layer by layer, the first layer
is how to be efficiently "selective" of your knowledge, second
layer is how to learn by maximizing at best quality or perfection of learning by minimizing at best quantity of learning, after that second layer you will be able to become much more powerful and be able to go fast and efficiently at learning.
-----------------------------------------------------------------------


Look at how i am in accordance with the second layer, i said that
the second layer is the following:

"second layer is how to learn by maximizing at best quality or perfection of learning by minimizing at best quantity of learning"


So look carefully below at how i have invented many scalable algorithms
and there implementations, and this also shows that i am doing
R&D(Research and development), but it shows also that
i am maximizing quality by minimizing at best quantity.

So read carefully all my following thoughts to notice it:

I am a white arab, and now about Lockfree and Waitfree and Locks..

I have just read the following thoughts of a PhD researcher, and he says the following:

"Lock-based concurrency mechanism (locks) have several difficulties in practice:
1) if we use more than one lock, we're subject to having deadlock issues;
2) if we use priority locks, we're subject to having priority inversion issues;
3) if we use a lock without starvation-freedom guarantees (such as a spinlock), we're subject to starvation and live-lock;
4) using locks is prone to convoying effects;
5) mutual exclusion locks don't scale for read-only operations, it takes a reader-writer lock to have some scalability for read-only operations and even then, we either execute read-only operations or one write, but never both at the same time. Until today, there is no known efficient reader-writer lock with starvation-freedom guarantees;"

Read more here:

http://concurrencyfreaks.blogspot.com/2019/04/onefile-and-tail-latency.html


But i think that he is not right by saying the following:

"Until today, there is no known efficient reader-writer lock with starvation-freedom guarantees"

Because i am an inventor of many scalable algorithms and there implementations, and i have invented scalable and efficient
starvation-free reader-writer locks, read my following thoughts below
to notice it..

Also look at his following webpage:

OneFile - The world's first wait-free Software Transactional Memory

http://concurrencyfreaks.blogspot.com/2019/04/onefile-worlds-first-wait-free-software.html

But i think he is not right, because read the following thoughts that i have just posted that applies to waitfree and lockfree:

https://groups.google.com/forum/#!topic/comp.programming.threads/F_cF4ft1Qic


And read all my following thoughts to understand:

About Lock elision and Transactional memory..

I have just read the following:

Lock elision in the GNU C library

https://lwn.net/Articles/534758/

So it says the following:

"Lock elision uses the same programming model as normal locks, so it can be directly applied to existing programs. The programmer keeps using locks, but the locks are faster as they can use hardware transactional memory internally for more parallelism. Lock elision uses memory transactions as a fast path, while the slow path is still a normal lock. Deadlocks and other classic locking problems are still possible, because the transactions may fall back to a real lock at any time."

So i think this is not good, because one of the benefits of Transactional memory is that it solves the deadlock problem, but
with Lock elision you bring back the deadlock problem.

More about Locks and Transactional memory..

I have just looked at the following webpage about understanding Transactional memory performance:

https://www.cs.utexas.edu/users/witchel/pubs/porter10ispass-tm-slides.pdf

And as you are noticing, it says that in practice Transactional memory
is worse than Locks at high contention, and it says that in practice Transactional memory is 40% worse than Locks at 100% contention.

This is why i have invented scalable Locks and scalable RWLocks, read
my following thoughts to notice it:


About beating Moore's Law with software..

bmoore has responded to me the following:

https://groups.google.com/forum/#!topic/soc.culture.china/Uu15FIknU0s

So as you are noticing he is asking me the following:

"Are you talking about beating Moore's Law with software?"

But i think that there is some of the following constraints:

"Modern programing environments contribute to the problem of software bloat by placing ease of development and portable code above speed or memory usage. While this is a sound business model in a commercial environment, it does not make sense where IT resources are constrained. Languages such as Java, C-Sharp, and Python have opted for code portability and software development speed above execution speed and memory usage, while modern data storage and transfer standards such as XML and JSON place flexibility and readability above efficiency."

Read the following:

https://smallwarsjournal.com/jrnl/art/overcoming-death-moores-law-role-software-advances-and-non-semiconductor-technologies

Also there remains the following to also beat Moores's Law:

"Improved Algorithms

Hardware improvements mean little if software cannot effectively use the resources available to it. The Army should shape future software algorithms by funding basic research on improved software algorithms to meet its specific needs. The Army should also search for new algorithms and techniques which can be applied to meet specific needs and develop a learning culture within its software community to disseminate this information."


And about scalable algorithms, as you know i am a white arab
that is an inventor of many scalable algorithms and there implementations, read my following thoughts to notice it:

About my new invention that is a scalable algorithm..

I am a white arab, and i think i am more smart,
and i think i am like a genius, because i have again just invented
a new scalable algorithm, but i will briefly talk about the following best scalable reader-writer lock inventions, the first one is the following:

Scalable Read-mostly Synchronization Using Passive Reader-Writer Locks

https://www.usenix.org/system/files/conference/atc14/atc14-paper-liu.pdf

You will notice that it has a first weakness that it is for TSO hardware memory model and the second weakness is that the writers latency is very expensive when there is few readers.

And here is the other best scalable reader-writer lock invention of Facebook:

SharedMutex is a reader-writer lock. It is small, very fast, scalable
on multi-core

Read here:

https://github.com/facebook/folly/blob/master/folly/SharedMutex.h


But you will notice that the weakness of this scalable reader-writer lock is that the priority can only be configured as the following:

SharedMutexReadPriority gives priority to readers,
SharedMutexWritePriority gives priority to writers.


So the weakness of this scalable reader-writer lock is that
you can have starvation with it.

So this is why i have just invented a scalable algorithm that is
a scalable reader-writer lock that is better than the above and that is starvation-free and that is fair and that has a small writers latency.

So i think mine is the best and i will sell many of my scalable algorithms to software companies such as Microsoft or Google or Embardero..


What is it to be an inventor of many scalable algorithms ?

The Holy Grail of parallel programming is to provide good speedup while
hiding or avoiding the pitfalls of concurrency. You have to understand it to be able to understand what i am doing, i am an inventor of
many scalable algorithms and there implementations, but how can we define the kind of inventor like me? i think there is the following kinds of inventors, the ones that are PhD researchers and inventors like Albert Einstein, and the ones that are engineers and inventors like Nikola Tesla, and i think that i am of the kind of inventor of Nikola Tesla, i am not a PhD researcher like Albert Einstein, i am like an engineer who invented many scalable algorithms and there implementations, so i am like the following inventor that we call Nikola Tesla:

https://en.wikipedia.org/wiki/Nikola_Tesla

But i think that both those PhD researchers that are inventors and those Engineers that are inventors are powerful.

You have to understand deeply what is to invent my scalable algorithms
and there implementations so that to understand that it is powerful,
i give you an example: So i have invented a scalable algorithm that is a scalable Mutex that is remarkable and that is the Holy Grail of scalable Locks, it has the following characteristics, read my following thoughts
to understand:

About fair and unfair locking..

I have just read the following lead engineer at Amazon:

Highly contended and fair locking in Java

https://brooker.co.za/blog/2012/09/10/locking.html

So as you are noticing that you can use unfair locking that can have starvation or fair locking that is slower than unfair locking.

I think that Microsoft synchronization objects like the Windows critical section uses unfair locking, but they still can have starvation.

But i think that this not the good way to do, because i am an inventor and i have invented a scalable Fast Mutex that is much more powerful , because with my Fast Mutex you are capable to tune the "fairness" of the lock, and my Fast Mutex is capable of more than that, read about it on my following thoughts:

More about research and software development..

I have just looked at the following new video:

Why is coding so hard...

https://www.youtube.com/watch?v=TAAXwrgd1U8

I am understanding this video, but i have to explain my work:

I am not like this techlead in the video above, because i am also an "inventor" that has invented many scalable algorithms and there implementions, i am also inventing effective abstractions, i give you an example:

Read the following of the senior research scientist that is called Dave Dice:

Preemption tolerant MCS locks

https://blogs.oracle.com/dave/preemption-tolerant-mcs-locks

As you are noticing he is trying to invent a new lock that is preemption tolerant, but his lock lacks some important characteristics, this is why i have just invented a new Fast Mutex that is adaptative and that is much much better and i think mine is the "best", and i think you will not find it anywhere, my new Fast Mutex has the following characteristics:

1- Starvation-free
2- Tunable fairness
3- It keeps efficiently and very low its cache coherence traffic
4- Very good fast path performance
5- And it has a good preemption tolerance.
6- It is faster than scalable MCS lock

this is how i am an "inventor", and i have also invented other scalable algorithms such as a scalable reference counting with efficient support for weak references, and i have invented a fully scalable Threadpool, and i have also invented a Fully scalable FIFO queue, and i have
also invented other scalable algorithms and there implementations, and i think i will sell some of them to Microsoft or to Google or Embarcadero or such software companies.

And here is my other previous new invention of a scalable algorithm:

I have just read the following PhD paper about the invention that we call counting networks and they are better than Software combining trees:

Counting Networks

http://people.csail.mit.edu/shanir/publications/AHS.pdf

And i have read the following PhD paper:

http://people.csail.mit.edu/shanir/publications/HLS.pdf

So as you are noticing they are saying in the conclusion that:

"Software combining trees and counting networks which are the only techniques we observed to be truly scalable"

But i just found that this counting networks algorithm is not generally scalable, and i have the logical proof here, this is why i have just come with a new invention that enhance the counting networks algorithm to be generally scalable. And i think i will sell my new algorithm
of a generally scalable counting networks to Microsoft or Google or Embarcadero or such software companies.

So you have to be careful with the actual counting networks algorithm that is not generally scalable.

My other new invention is my scalable reference counting and here it is:

https://sites.google.com/site/scalable68/scalable-reference-counting-with-efficient-support-for-weak-references

And here is my just new invention of a scalable algorithm:

My Scalable RWLock that works across processes and threads was updated to version 4.62

Now i think it is working correctly in both Windows and Linux..

You can download it from my website here:

https://sites.google.com/site/scalable68/scalable-rwlock-that-works-accross-processes-and-threads

More about me as an inventor of many scalable algorithms..

I am a white arab and i think i am like a genius, because i have invented many scalable algorithms and there implementations, and look for example at my just new invention of a scalable algorithm here:

https://sites.google.com/site/scalable68/scalable-rwlock-that-works-accross-processes-and-threads

As you have noticed, you have to be like a genius to be able to invent
my above scalable algorithm of a scalable RWLock, because it has the following characteristics:

1- It is Scalable
2- It is Starvation-free
3- It is fair
4- It can be used across processes and threads
5- It can be used as a scalable Lock across processes and threads
by using my scalable AMLock that is FIFO fair on the writers side, or it can be
used as a scalable RWLock.

I am using my scalable Lock that is FIFO fair that is called scalable AMLock on the writers side.

Here is why scalable Locks are really important:

https://queue.acm.org/detail.cfm?id=2698990

So all in all it is a really good invention of mine.

Read my previous thoughts:

Here is how to use my new invention that is my scalable RWLock
across processes:

Just create an scalable rwlock object by giving a name in one process by calling the constructor like this:

scalable_rwlock.create('amine');


And you can use the scalable rwlock object from another process by calling the constructor by using the name like this:

scalable_rwlock.create('amine');


So as you are noticing i have abstracted it efficiently..


Read the rest of my previous thoughts:

My new invention of a Scalable RWLock that works across processes and threads is here, and now it works on both Windows and Linux..

Please download my source code and take a look at how i am making it work across processes by using FNV1a hash on both process ID and thread ID, FNV1a has a good dispersion, and FNV1a hash permits also my RWLock to be scalable.


You can download it from my website here:

https://sites.google.com/site/scalable68/scalable-rwlock-that-works-accross-processes-and-threads

Description:

This is my invention of a fast, and scalable and starvation-free and fair and lightweight Multiple-Readers-Exclusive-Writer Lock called LW_RWLockX, it works across processes and threads.

The parameters of the constructor are: first parameter is the name of the scalable RWLock to be used across processes, if the name is empty, it will only be used across threads. The second parameter is the size of the array of the readers, so if the size of the array is equal to the number of parallel readers, so it will be scalable, but if the number of readers are greater than the size of the array , you will start to have contention. The third parameter is the size of the array of my scalable Lock that is called AMLock, the number of threads can go beyond the size of the array of the scalable AMLock, please look at the source code of my scalable algorithms to understand.

I have also used my following implementation of FNV1a hash function to make my new variants of RWLocks scalable (since FNV1a is a hash algorithm that has good dispersion):

function FNV1aHash(key:int64): UInt64;

var
i: Integer;
key1:uint64;

const

FNV_offset_basis: UInt64 = 14695981039346656037;
FNV_prime: UInt64 = 1099511628211;

begin

//FNV-1a hash

Result := FNV_offset_basis;

for i := 1 to 8 do
begin
key1:=(key shr ((i-1)*8)) and $00000000000000ff;
Result := (Result xor key1) * FNV_prime;
end;

end;

- Platform: Windows, Unix and Linux on x86

Required FPC switches: -O3 -Sd

-Sd for delphi mode....

Required Delphi switches: -$H+ -DDelphi

For Delphi XE-XE7 and Delphi tokyo use the -DXE switch

You can configure it as follows from inside defines.inc file:

{$DEFINE CPU32} and {$DEFINE Windows32} for 32 bit systems
{$DEFINE CPU64} and {$DEFINE Windows64} for 64 bit systems

--'

I am a white arab, and why have i invented scalable RWLocks and scalable Locks ?

Because there is a disadvantage with Transactional memory and
here it is:

About Hardware Transactional Memory:

"As someone who has used TSX to optimize synchronization primitives, you can expect to see a ~15-20% performance increase, if (big if) your program is heavy on disjoint data access, i.e. a lock is needed for correctness, but conflicts are rare in practice. If you have a lot of threads frequently writing the same cache lines, you are probably going to see worse performance with TSX as opposed to traditional locking. It helps to think about TSX as transparently performing optimistic concurrency control, which is actually pretty much how it is implemented under the hood."

Read more here:

https://news.ycombinator.com/item?id=8169697


So as you are noticing, HTM (hardware transactional memory) and TM can not replace locks when doing IO and when we have a highly contended critical section.


Read the rest:


I have just read the following article that appeared in C/C++ Users Journal, 23(3), March 2005

The Trouble With Locks

http://gotw.ca/publications/mill36.htm


And here is my thoughts about how to avoid deadlocks and race conditions
in lock-based systems:

https://community.idera.com/developer-tools/general-development/f/getit-and-third-party/71464/about-turing-completeness-and-parallel-programming

Also i don't agree with him about composability of lock-based systems,
read the following to understand:

"About composability of lock-based systems now:

Design your systems to be composable. Among the more galling claims of the detractors of lock-based systems is the notion that they are somehow uncomposable:

“Locks and condition variables do not support modular programming,” reads one typically brazen claim, “building large programs by gluing together smaller programs[:] locks make this impossible.”9 The claim, of course, is incorrect. For evidence one need only point at the composition of lock-based systems such as databases and operating systems into larger systems that remain entirely unaware of lower-level locking.

There are two ways to make lock-based systems completely composable, and each has its own place. First (and most obviously), one can make locking entirely internal to the subsystem. For example, in concurrent operating systems, control never returns to user level with in-kernel locks held; the locks used to implement the system itself are entirely behind the system call interface that constitutes the interface to the system. More generally, this model can work whenever a crisp interface exists between software components: as long as control flow is never returned to the caller with locks held, the subsystem will remain composable.

Second (and perhaps counterintuitively), one can achieve concurrency and
composability by having no locks whatsoever. In this case, there must be
no global subsystem state—subsystem state must be captured in per-instance state, and it must be up to consumers of the subsystem to assure that they do not access their instance in parallel. By leaving locking up to the client of the subsystem, the subsystem itself can be used concurrently by different subsystems and in different contexts. A concrete example of this is the AVL tree implementation used extensively in the Solaris kernel. As with any balanced binary tree, the implementation is sufficiently complex to merit componentization, but by not having any global state, the implementation may be used concurrently by disjoint subsystems—the only constraint is that manipulation of a single AVL tree instance must be serialized."

Read more here:

https://queue.acm.org/detail.cfm?id=1454462


Thank you,
Amine Moulay Ramdane.

0 new messages