Misplaced Pages

pthreads

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

In computing , POSIX Threads , commonly known as pthreads , is an execution model that exists independently from a programming language , as well as a parallel execution model. It allows a program to control multiple different flows of work that overlap in time. Each flow of work is referred to as a thread , and creation and control over these flows is achieved by making calls to the POSIX Threads API . POSIX Threads is an API defined by the Institute of Electrical and Electronics Engineers (IEEE) standard POSIX .1c, Threads extensions (IEEE Std 1003.1c-1995) .

#471528

39-658: Implementations of the API are available on many Unix-like POSIX-conformant operating systems such as FreeBSD , NetBSD , OpenBSD , Linux , macOS , Android , Solaris , Redox , and AUTOSAR Adaptive, typically bundled as a library libpthread . DR-DOS and Microsoft Windows implementations also exist: within the SFU/SUA subsystem which provides a native implementation of a number of POSIX APIs, and also within third-party packages such as pthreads-w32 , which implements pthreads on top of existing Windows API . pthreads defines

78-550: A genericized trademark . Some add a wildcard character to the name to make an abbreviation like "Un*x" or "*nix", since Unix-like systems often have Unix-like names such as AIX , A/UX , HP-UX , IRIX , Linux , Minix , Ultrix , Xenix , and XNU . These patterns do not literally match many system names, but are still generally recognized to refer to any UNIX system, descendant, or work-alike, even those with completely dissimilar names such as Darwin / macOS , illumos / Solaris or FreeBSD . In 2007, Wayne R. Gray sued to dispute

117-473: A POSIX compatibility layer and are not otherwise inherently Unix systems. Many ancient UNIX systems no longer meet this definition. Broadly, any Unix-like system that behaves in a manner roughly consistent with the UNIX specification, including having a " program which manages your login and command line sessions "; more specifically, this can refer to systems such as Linux or Minix that behave similarly to

156-470: A UNIX system but have no genetic or trademark connection to the AT&;T code base. Most free/open-source implementations of the UNIX design, whether genetic UNIX or not, fall into the restricted definition of this third category due to the expense of obtaining Open Group certification, which costs thousands of dollars. Around 2001 Linux was given the opportunity to get a certification including free help from

195-596: A historical connection to the AT&;T codebase. Most commercial UNIX systems fall into this category. So do the BSD systems, which are descendants of work done at the University of California, Berkeley in the late 1970s and early 1980s. Some of these systems have no original AT&T code but can still trace their ancestry to AT&T designs. These systems‍—‌largely commercial in nature‍—‌have been determined by

234-626: A robust, commercial-grade, feature-rich and freely available source code implementation of an HTTP (Web) server. The project is jointly managed by a group of volunteers located around the world, using the Internet and the Web to communicate, plan, and develop the server and its related documentation. This project is part of the Apache Software Foundation . In addition, hundreds of users have contributed ideas, code, and documentation to

273-507: A set of C programming language types , functions and constants. It is implemented with a pthread.h header and a thread library . There are around 100 threads procedures, all prefixed pthread_ and they can be categorized into five groups: The POSIX semaphore API works with POSIX threads but is not part of the threads standard, having been defined in the POSIX.1b, Real-time extensions (IEEE Std 1003.1b-1993) standard. Consequently,

312-455: A single user or process at a time. Another important feature of Unix-like systems is their modularity . This means that the operating system is made up of many small, interchangeable components that can be added or removed as needed. This makes it easy to customize the operating system to suit the needs of different users or environments. The Open Group owns the UNIX trademark and administers

351-486: A variety of proprietary systems were developed based on it, including AIX , HP-UX , IRIX , SunOS , Tru64 , Ultrix , and Xenix . These largely displaced the proprietary clones. Growing incompatibility among these systems led to the creation of interoperability standards, including POSIX and the Single UNIX Specification . Various free, low-cost, and unrestricted substitutes for UNIX emerged in

390-553: Is a free and open-source cross-platform web server software, released under the terms of Apache License 2.0 . It is developed and maintained by a community of developers under the auspices of the Apache Software Foundation . The vast majority of Apache HTTP Server instances run on a Linux distribution , but current versions also run on Microsoft Windows , OpenVMS , and a wide variety of Unix-like systems. Past versions also ran on NetWare , OS/2 and other operating systems, including ports to mainframes. Originally based on

429-628: Is still half as fast as nginx, e.g. The Apache HTTP Server codebase was relicensed to the Apache 2.0 License (from the previous 1.1 license) in January 2004, and Apache HTTP Server 1.3.31 and 2.0.49 were the first releases using the new license. The OpenBSD project did not like the change and continued the use of pre-2.0 Apache versions, effectively forking Apache 1.3.x for its purposes. They initially replaced it with Nginx , and soon after made their own replacement, OpenBSD Httpd, based on

SECTION 10

#1732783280472

468-469: The Apache web server and the Bash shell, are also designed to be used on Unix-like systems. One of the key features of Unix-like systems is their ability to support multiple users and processes simultaneously. This allows users to run multiple programs at the same time and to share resources such as memory and disk space. This is in contrast to many older operating systems, which were designed to only support

507-579: The NCSA HTTPd server, development of Apache began in early 1995 after work on the NCSA code stalled. Apache played a key role in the initial growth of the World Wide Web , quickly overtaking NCSA HTTPd as the dominant HTTP server. In 2009, it became the first web server software to serve more than 100 million websites . As of March 2022 , Netcraft estimated that Apache served 23.04% of

546-530: The Open Group to meet the Single UNIX Specification and are allowed to carry the UNIX name. Most such systems are commercial derivatives of the System V code base in one form or another, although Apple macOS 10.5 and later is a BSD variant that has been certified, and EulerOS and Inspur K-UX are Linux distributions that have been certified. A few other systems (such as IBM z/OS) earned the trademark through

585-560: The Single UNIX Specification . A Unix-like application is one that behaves like the corresponding Unix command or shell . Although there are general philosophies for Unix design, there is no technical standard defining the term, and opinions can differ about the degree to which a particular operating system or application is Unix-like. Some well-known examples of Unix-like operating systems include Linux and BSD . These systems are often used on servers as well as on personal computers and other devices. Many popular applications, such as

624-518: The Windows Services for UNIX/Subsystem for UNIX-based Applications package provides a native port of the pthreads API, i.e. not mapped on Win32 API but built directly on the operating system syscall interface. Unix-like A Unix-like (sometimes referred to as UN*X or *nix ) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of

663-514: The 1980s and 1990s, including 4.4BSD , Linux , and Minix . Some of these have in turn been the basis for commercial "Unix-like" systems, such as BSD/OS and macOS . Several versions of (Mac) OS X/macOS running on Intel-based Mac computers have been certified under the Single UNIX Specification . The BSD variants are descendants of UNIX developed by the University of California at Berkeley, with UNIX source code from Bell Labs . However,

702-714: The Apache Software Foundation of cultural appropriation and urged them to change the foundation's name, and consequently also the names of the software projects it hosts. When Apache is running under Unix , its process name is httpd , which is short for "HTTP daemon ". Apache supports a variety of features, many implemented as compiled modules which extend the core functionality. These can range from authentication schemes to supporting server-side programming languages such as Perl , Python , Tcl and PHP . Popular authentication modules include mod_access, mod_auth, mod_digest, and mod_auth_digest,

741-621: The BSD code base has evolved since then, replacing all the AT&T code. Since the BSD variants are not certified as compliant with the Single UNIX Specification, they are referred to as "UNIX-like" rather than "UNIX". Dennis Ritchie , one of the original creators of Unix, expressed his opinion that Unix-like systems such as Linux are de facto Unix systems. Eric S. Raymond and Rob Landley have suggested that there are three kinds of Unix-like systems: Those systems with

780-866: The POSIX chair Andrew Josey for the symbolic price of one dollar. There have been some activities to make Linux POSIX-compliant, with Josey having prepared a list of differences between the POSIX standard and the Linux Standard Base specification, but in August 2005, this project was shut down because of missing interest at the LSB work group. Some non-Unix-like operating systems provide a Unix-like compatibility layer , with varying degrees of Unix-like functionality. Other means of Windows-Unix interoperability include: Apache HTTP Server The Apache HTTP Server ( / ə ˈ p æ tʃ i / ə- PATCH -ee )

819-578: The Relayd project. Version 1.1: The Apache License 1.1 was approved by the ASF in 2000: The primary change from the 1.0 license is in the 'advertising clause' (section 3 of the 1.0 license); derived products are no longer required to include attribution in their advertising materials, only in their documentation. Version 2.0: The ASF adopted the Apache License 2.0 in January 2004. The stated goals of

SECTION 20

#1732783280472

858-481: The Single UNIX Specification, with the "UNIX" name being used as a certification mark . They do not approve of the construction "Unix-like", and consider it a misuse of their trademark. Their guidelines require "UNIX" to be presented in uppercase or otherwise distinguished from the surrounding text, strongly encourage using it as a branding adjective for a generic word such as "system", and discourage its use in hyphenated phrases. Other parties frequently treat "Unix" as

897-698: The Windows platform. Pthreads4w version 3.0.0 or later, released under the Apache Public License v2.0, is compatible with 64-bit or 32-bit Windows systems. Version 2.11.0, released under the LGPLv3 license, is also 64-bit or 32-bit compatible. The Mingw-w64 project also contains a wrapper implementation of 'pthreads, winpthreads , which tries to use more native system calls than the Pthreads4w project. Interix environment subsystem available in

936-456: The computer is still connected and not experiencing network problems. The Apache developers have addressed Slowloris with several modules to limit the damage caused; the Apache modules mod_limitipconn, mod_qos , mod_evasive, mod security , mod_noloris, and mod_antiloris have all been suggested as means of reducing the likelihood of a successful Slowloris attack. Since Apache 2.2.15, Apache ships

975-399: The demands of each particular infrastructure. Choice of MPM and configuration is therefore important. Where compromises in performance must be made, Apache is designed to reduce latency and increase throughput relative to simply handling more requests, thus ensuring consistent and reliable processing of requests within reasonable time-frames. For delivering static pages, Apache 2.2 series

1014-459: The functions, making it a global variable . This program can be compiled using the gcc compiler with the following command: Here is one of the many possible outputs from running this program. Windows does not support the pthreads standard natively, therefore the Pthreads4w project seeks to provide a portable and open-source wrapper implementation. It can also be used to port Unix software (which uses pthreads) with little or no modification to

1053-448: The license included making the license easier for non-ASF projects to use, improving compatibility with GPL-based software, allowing the license to be included by reference instead of listed in every file, clarifying the license on contributions, and requiring a patent license on contributions that necessarily infringe a contributor's own patents. The Apache HTTP Server Project is a collaborative software development effort aimed at creating

1092-497: The million busiest websites, while Nginx served 22.01%; Cloudflare at 19.53% and Microsoft Internet Information Services at 5.78% rounded out the top four. For some of Netcraft's other stats, Nginx is ahead of Apache. According to W3Techs' review of all web sites, in June 2022 Apache was ranked second at 31.4% and Nginx first at 33.6%, with Cloudflare Server third at 21.6%. According to The Apache Software Foundation , its name

1131-524: The name and that it was a really good pun. And I was like, "A pun? What do you mean?" He said, "Well, we're building a server out of a bunch of software patches, right? So it's a patchy Web server." I went, "Oh, all right." ... When I thought of the name, no. It just sort of connoted: "Take no prisoners. Be kind of aggressive and kick some ass." In January 2023, the US-based non-profit Natives in Tech accused

1170-407: The name—saw his effort somewhat parallel that of Geronimo , Chief of the last of the free Apache peoples. But it conceded that the name "also makes a cute pun on 'a patchy web server '—a server made from a series of patches ". There are other sources for the "patchy" software pun theory, including the project's official documentation in 1995, which stated: "Apache is a cute name which stuck. It

1209-404: The project. Apache 2.4 dropped support for BeOS , TPF , A/UX , NeXT , and Tandem platforms. Apache, like other server software, can be hacked and exploited. The main Apache attack tool is Slowloris , which exploits a bug in Apache software. It creates many sockets and keeps each of them alive and busy by sending several bytes (known as "keep-alive headers") to let the server know that

pthreads - Misplaced Pages Continue

1248-464: The semaphore procedures are prefixed by sem_ instead of pthread_ . An example illustrating the use of pthreads in C: This program creates five threads, each executing the function perform_work that prints the unique number of this thread to standard output. If a programmer wanted the threads to communicate with each other, this would require defining a variable outside of the scope of any of

1287-753: The size (weight) of web pages served over HTTP . ModSecurity is an open source intrusion detection and prevention engine for Web applications. Apache logs can be analyzed through a Web browser using free scripts, such as AWStats / W3Perl or Visitors. Virtual hosting allows one Apache installation to serve many different websites . For example, one computer with one Apache installation could simultaneously serve example.com , example.org , test47.test-server.example.edu , etc. Apache features configurable error messages, DBMS -based authentication databases, content negotiation and supports several graphical user interfaces (GUIs). It supports password authentication and digital certificate authentication. Because

1326-448: The source code is freely available, anyone can adapt the server for specific needs, and there is a large public library of Apache add-ons. A more detailed list of features is provided below: Instead of implementing a single architecture, Apache provides a variety of MultiProcessing Modules (MPMs), which allow it to run in either a process -based mode, a hybrid (process and thread ) mode, or an event-hybrid mode, in order to better match

1365-508: The status of UNIX as a trademark, but lost his case, and lost again on appeal, with the court upholding the trademark and its ownership. "Unix-like" systems started to appear in the late 1970s and early 1980s. Many proprietary versions, such as Idris (1978), UNOS (1982), Coherent (1983), and UniFlex (1985), aimed to provide businesses with the functionality available to academic users of UNIX. When AT&T allowed relatively inexpensive commercial binary sublicensing of UNIX in 1979,

1404-428: The successor to mod_digest. A sample of other features include Secure Sockets Layer and Transport Layer Security support ( mod_ssl ), a proxy module ( mod_proxy ), a URL rewriting module (mod_rewrite), custom log files (mod_log_config), and filtering support (mod_include and mod_ext_filter). Popular compression methods on Apache include the external extension module, mod_gzip, implemented to help with reduction of

1443-507: Was based on some existing code and a series of software patches, a pun on 'A PAtCHy' server." But in an April 2000 interview, Behlendorf asserted that the origins of Apache were not a pun, stating: The name literally came out of the blue. I wish I could say that it was something fantastic, but it was out of the blue. I put it on a page and then a few months later when this project started, I pointed people to this page and said: "Hey, what do you think of that idea?" ... Someone said they liked

1482-451: Was chosen "from respect for the various Native American nations collectively referred to as Apache , well-known for their superior skills in warfare strategy and their inexhaustible endurance". This was in a context in which it seemed that the open internet—based on free exchange of open source code—appeared to be soon subjected to a kind of conquer by proprietary software vendor Microsoft ; Apache co-creator Brian Behlendorf —originator of

1521-557: Was considered significantly slower than nginx and varnish . To address this issue, the Apache developers created the Event MPM, which mixes the use of several processes and several threads per process in an asynchronous event-based loop . This architecture as implemented in the Apache 2.4 series performs at least as well as event-based web servers, according to Jim Jagielski and other independent sources. However, some independent but significantly outdated benchmarks show that it

#471528