Non-volatile memory (NVM) promises persistent main memory that remains correct despite loss of power. This has sparked a line of research into algorithms that can recover from a system crash. Since caches are expected to remain volatile, concurrent data structures and algorithms must be redesigned to guarantee that they are left in a consistent state after a system crash, and that the execution can be continued upon recovery. However, the prospect of redesigning every concurrent data structure or algorithm before it can be used in NVM architectures is daunting.In this paper, we present a construction that takes any concurrent program with reads, writes and CASs to shared memory and makes it persistent, i.e., can be continued after one or more processes fault and have to restart. Importantly the converted algorithm has constant computational delay (preserves instruction counts on each process within a constant factor), as well as constant recovery delay (a process can recover from a fault in a constant number of instructions). We show this first for a simple transformation, and then present optimizations to make it more practical, allowing for a tradeoff for better constant factors in computational delay, for sometimes increased recovery delay. We also provide an optimized transformation that works for any normalized lock-free data structure, thus allowing more efficient constructions for a large class of concurrent algorithms.Finally, we experimentally evaluate transformations by applying them to a queue. We compare the performance of our transformations to that of a persistent transactional memory framework, Romulus, and to a hand-tuned persistent queue. We show that our transformations perform favorably when compared to Romulus. Furthermore, while the hand-tuned version sometimes outperforms our transformations, the difference is not an unreasonable price to pay for the generality and ease of use that we provide.
In this paper we are interested in bounding the number of instructions taken to process transactions. The main result is a multiversion transactional system that supports constant delay (extra instructions beyond running in isolation) for all read-only transactions, delay equal to the number of processes for writing transactions that are not concurrent with other writers, and lock-freedom for concurrent writers. The system supports precise garbage collection in that versions are identified for collection as soon as the last transaction releases them. As far as we know these are first results that bound delays for multiple readers and even a single writer. The approach is particularly useful in situations where read-transactions dominate write transactions, or where write transactions come in as streams or batches and can be processed by a single writer (possibly in parallel).The approach is based on using functional data structures to support multiple versions, and an efficient solution to the Version Maintenance (VM) problem for acquiring, updating and releasing versions. Our solution to the VM problem is precise, safe and wait free (PSWF).We experimentally validate our approach by applying it to balanced tree data structure for maintaining ordered maps. We test the transactional system using multiple algorithms for the VM problem, including our PSWF VM algorithm, and implementations with weaker guarantees based on epochs, hazard pointers, and read-copy-update. To evaluate the functional data structure for concurrency and multi-versioning, we implement batched updates for functional tree structures and compare the performance with state-of-the-art concurrent data structures for balanced trees. The experiments indicate our approach works well in practice over a broad set of criteria. * This paper is the full version of a paper published in the ACM Symposium on Parallelism in Algorithms and Architectures (SPAA), 2019. The conference version of this paper [10] can be found at https://doi.org/10.1145/3323165.3323185.1 Throughout we use "transaction" to mean the traditional sense of a sequence of instructions that appear to take place atomically at some point during their execution (strictly serializable) [51], and not to mean a specific implementation technique such as transactional memory. arXiv:1803.08617v3 [cs.DC] 15 May 2019Read Transaction 1 v = acquire(k); 2 user_code(v); 3 // response 4 versions = release(k); 5 for (v in versions) collect(v); Write Transaction1 v = acquire(k); 2 newv = user_code(v); 3 flag = set(newv); 4 // response if successful---update visible here 5 versions = release(k); 6 for (v in versions) collect(v); 7 if (!flag) collect(newv) and retry or abort
Alfalfa polysaccharides (AP) receive wide attention in the field of medicine, because of their anti-inflammatory property. However, AP has high molecular weight and poor water solubility, resulting in low biological activity. We wanted to obtain highly bioactive alfalfa polysaccharides for further research. Herein, we successfully synthesized highly substituted sulfated alfalfa polysaccharides (SAP) via the chlorosulfonic acid (CSA)-pyridine (Pyr) method, which was optimized using response surface methodology (RSM). Under the best reaction conditions, that is, the reaction temperature, time, and ratio of CSA to Pyr being 55 °C, 2.25 h, and 1.5:1, respectively, the maximum degree of substitution of SAP can reach up to 0.724. Fourier transform infrared spectroscopy also confirmed the existence of sulfonic acid groups on SAP. Despite the increased average molecular weight of SAP, its water solubility is improved, which is beneficial for its biological activity. Further in vitro results showed that SAP exhibited better antioxidant activity and antibacterial ability than AP. Besides, the former can efficiently enhance the viability of oxidatively stressed intestinal epithelial cells compared with the latter. Furthermore, SAP has the potential to inhibit obesity. It is concluded that sulfation modification could improve the antioxidant, antibacterial, bovine intestinal epithelial cells’ proliferation-promoting, and the obesity inhibition abilities of AP. The improvement of AP biological activity may provide references for the utilization of plant extracts that have weaker biological activity.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.
customersupport@researchsolutions.com
10624 S. Eastern Ave., Ste. A-614
Henderson, NV 89052, USA
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Copyright © 2025 scite LLC. All rights reserved.
Made with 💙 for researchers
Part of the Research Solutions Family.